说我有一个包含修订版A-B-C-D-E-F-G-H-I-J-K-L-M
的仓库。文件foo.txt
在B
,G
,J
中被修改(或创建)。我想另外将修订版C
和E
绑定到foo.txt的历史记录,以便B-C-E-G-J
使用关于foo.txt
的简单命令,例如git 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生效。
答案 0 :(得分:2)
运行git log -- foo.txt
时,只会获得对该文件进行更改的提交。因此,你只是提交A-D而不是整棵树的原因是在B&中没有改变foo.txt。下进行。
Git在每次提交中存储系统的更改。在提交B& C,foo.txt没有变化。因此提交将不会对该文件进行任何修改。如果某些程序运行git add foo.txt
并不重要,则文件没有任何更改,因此无需添加或提交任何内容。
通过添加文件名,您可以跟踪文件中的更改,以便在项目过程中查看更改方式。
如果您想获得A& A之间的所有提交D,您想要运行git log A..D
。您可以添加--name-only
选项以查看每次提交中更改的文件,或使用-p
选项查看该提交中所做的所有更改。