我最近用
查看了文件的历史记录 git log --full-history -- file
,它发现添加了该文件的单个提交和一些合并提交,但没有指示这些提交删除了文件。仍在HEAD
中,该文件不存在。经过一番挖掘之后,我发现该文件已作为所列合并提交之一的一部分被删除(通过重新创建合并并将结果与原始合并进行比较)。例如,请使用以下shell命令创建的历史记录:
$ git init
Initialized empty Git repository in $PWD/.git/
$ echo content1 > file1
$ git add file1
$ git commit -m commit1
...
$ echo content2 > file2
$ git add file2
$ git commit -m 'commit2'
...
$ git checkout @~
...
$ git merge --no-ff --no-commit @{-1}
Automatic merge went well; stopped before committing as requested
$ git rm -f file2
rm 'file2'
$ git commit --no-edit
现在git log --full-history -- file2
列出了两个相关的提交,但是查看合并提交(例如使用git show
),file2
在那里消失并不明显。
我很清楚为什么git show
不会告诉您该信息,并且在大多数情况下,这是明智的。我仍然想知道如何在更复杂的历史中确定这种承诺。有准备好使用的东西吗?还是需要重新创建所有合并的树?