我正在使用Git,我已经提交了几个文件使用 git commit -a 后来,我发现一个文件被错误地添加到提交中。 我怎样才能删除最后一次提交的文件?
我试图按照Git的指示:“目前不在任何分支上”。 有没有一种简单的方法来恢复分支,同时保持更改? 但是git checkout似乎被破坏了: $ git checkout origin/web-zach HEAD is now at 1366cb1… Changed so css files not ignored $ git status # Not currently on any branch. # Untracked files: # (use "git add <file>…" to include in what will be committed) # # .cordova/config.xml # www/languages/pt/sounds/ nothing added to commit but untracked files […]
我试图弄清楚Git中的“嫁接”是什么。 例如,在这里的最新评论之一,Tobu假设使用git-filter-branch和.git / info / grafts来join两个存储库。 但我不明白为什么我需要这些移植物 ? 看来,这一切都没有最后两个命令的工作。
我正在尝试使用带有否定模式的.gitignore文件(以!开头的行),但是它不能按我期望的方式工作。 作为一个简单的例子,我有以下的目录结构: C:/gittest — .gitignore — aaa/ — bbb/ — file.txt — ccc/ — otherfile.txt 在我的gitignore文件中,我有这样的: aaa/ !aaa/ccc/ 我的理解(基于这个文档页面 )是文件aaa / ccc / otherfile.txt不应该被忽略,但实际上git是忽略aaa下的一切。 我误解了这句话:“一个可选的前缀!否定模式;任何先前模式排除的匹配文件将再次被包含”。 顺便说一句,这是在Windows上使用msysgit 1.7.0.2。
我有一个脚本需要引用存储库中的初始提交。 git有特殊的参考头,但没有相应的TAIL 。 在git help rev-parse中找不到任何帮助我的东西。 这是我想要做的: git show TAIL 这里有一个选项我有: git show `git log –reverse | if read a commit ; then echo $commit ; fi` 这是相当hacky,并取决于不改变的git日志的输出。 现在我只是标记初始提交并将其用作我的refspec。 不过,我想发布一个通用工具,所以这不是一个好的select。
什么是最有效的机制(就传输的数据和磁盘空间而言)从远程git存储库获取单个文件的内容? 到目前为止,我设法想出了: git clone –no-checkout –depth 1 git@github.com:foo/bar.git && cd bar && git show HEAD:path/to/file.txt 这似乎还是矫枉过正。 怎么从回购多个文件?
在Subversion或CVS中处理多个合并到分支机构中仅仅是必须经历的事情之一。 在Mercurial(也可能是其他任何分布式系统)中跟踪分支和合并是非常容易的,但我不知道为什么。 其他人知道吗? 我的问题源于这样的事实:使用Mercurial你可以采取类似于Subversions / CVS中央仓库的工作实践,一切都将工作得很好。 你可以在同一个分支上进行多次合并,你不需要用提交数字和标签名称的无尽纸屑。 我知道最新版本的Subversion有能力跟踪分支合并,所以你没有得到相同程度的麻烦,但这是一个巨大而重大的发展,它仍然不会做所有的开发团队喜欢它做。 它们的工作方式必须有根本的区别。
我有一个谷歌如何做到这一点,但没有任何运气。 我最好将是一个shell脚本replace符号链接与副本,还是有另一种方法告诉git遵循符号链接? PS:我知道这不是很安全,但我只想在几个特定的情况下做。
据我了解,当Git给一个文件分配一个SHA1哈希值时,这个SHA1对于该文件是基于其内容而言是唯一的。 因此,如果文件从一个存储库移动到另一个存储库,文件的SHA1保持不变,而其内容没有改变。 Git如何计算SHA1摘要? 它是否在完整的未压缩的文件内容? 我想仿效在Git之外分配SHA1。
可能重复: 使用Git如何find本地和远程之间的修改文件 我怎样才能看到传入的提交git? 或者甚至更好,看看我只是git fetch / git pull编辑? 编辑:澄清这个问题:有人告诉我,为了得到一些修复,我应该从他们的存储库拉。 我的目标是在接受他们之前看看他们的变化是什么。 git pull自动合并,这不是我想要的。 git fetch会抓住它们而不合并,但是我不确定如何查看我刚刚拉入的内容。原始语句的原因是我通常使用Mercurial,其中命令是hg incoming <repo name here> -a git似乎缺less一个类似的命令。