2

假设我有一个带有修订的回购A-B-C-D-E-F-G-H-I-J-K-L-M。文件被记录在, ,foo.txt中修改(或创建)。我想另外绑定修订版和foo.txt 的历史记录,以便我得到一个简单的命令,例如. 有没有办法做到这一点?BGJCEB-C-E-G-Jfoo.txtgit log -- foo.txt

如果这是不可能的,有没有好的选择?

(更多详情如下)

原因是 A~M 是旧项目的快照,后来被导入到 git repo。课程期间发生了一些事情,快照 C 和 E 上的 foo.txt 的实际状态丢失了,尽管两者实际上都修改了 foo.txt。但是C和E的变更消息(提交消息)与foo.txt的变化过程有关,应该包含在foo.txt的历史列表中。因此,我想在 时收到他们的提交消息git log -- foo.txt,就好像git add -- foo.txt已经运行并在修订版 C 和 E 上生效一样。

4

1 回答 1

2

当您运行时git log -- foo.txt,您只会获得对该文件进行更改的提交。所以你只得到提交 AD 而不是整个树的原因是 foo.txt 在 B & C 中没有改变。

Git 将系统的更改存储在每次提交中。在提交 B 和 C 中,foo.txt 没有任何更改。所以提交不会对该文件进行任何修改。是否有一些运行无关紧要git add foo.txt,文件没有更改,因此无需添加或提交任何内容。

添加文件名允许您跟踪文件中的更改,以便您可以查看在项目过程中它是如何更改的。

如果你想获得 A 和 D 之间的所有提交,你想运行git log A..D. 您可以添加--name-only选项以查看在每次提交中更改的文件,或使用该-p选项查看在该提交中所做的所有更改。

于 2013-10-23T13:24:57.063 回答