2

我在项目中使用的唯一分布式修订控制系统是 bazaar。除了如何结账外,我对 git 和 mercurial 了解不多。我喜欢 bazaar 的原因是 automv 插件。它检测我何时手动移动/删除文件(从命令行/ide等),当我赶时间时,我倾向于做很多事情。但是 bazaar 真的很慢,我正在考虑转向 git。git 有类似这个功能的东西吗?

4

3 回答 3

8

Git 在移动/重命名情况下的工作方式是完全不同的。Git 只跟踪内容,因此它知道文件 X 在一次提交时具有 SHA1 哈希值,而文件 Y在下一次提交时abc123...恰好具有相同的哈希值。abc123...因此,Git 工具在查看历史记录或其他内容时会得出结论,文件 X 必须在此时重命名为文件名 Y。

通过这种方式,Git 重构了从一个提交到下一个提交所采取的操作,而无需在提交时掌握这些知识。它可以事件检测您重命名文件更改文件中某些内容的情况(当然,它不是通过比较 SHA1 哈希值来做到这一点,而是通过在提交中更改的文件之间进行文本比较)。

于 2008-12-23T07:47:08.287 回答
2

您可能正在寻找git add --all

更新 git 已经知道的文件(与 相同--update)并添加所有未被机制忽略的未跟踪文件.gitignore

(强调我的。)

于 2008-12-23T15:11:49.683 回答
1

仅供参考,只有集市知道动作。SVN、Git、hg 只知道带版本的复制和删除。我认为那是不同的。但正如之前提到的,git 很好地处理了 automv(据我所知),只有在移动后非常聪明才能快速提交。我听说 egit 在你重命名一个类后会自动提交。

于 2010-09-11T18:54:55.100 回答