我试图用来git log
查找特定文件何时被带入主文件。(简化的)版本历史如下所示:
* f77cac3 Merge branch 'branch2'
|\
| * da35250 Merge branch 'branch1' into branch2
| |\
| | * 90ab3e3 adding foo on branch1
| * | 42a0367 adding bar in branch2
| |/
* | 853b691 changes to baz on master
* | c7b6c72 baz file on master
|/
* e195580 first commit
我想找出哪个提交将文件'foo'引入了master(应该是f77cac3)。但是,运行git log --foo
会给出 90ab3e3。在更复杂的情况下,对分支 1 和分支 2 上的文件 foo 进行了多次更改,所有这些提交都会显示,但不会显示合并提交。我已经阅读了 git 帮助,以及在 Stack Overflow 上搜索和搜索,但我找不到这样做的方法。
以下是可用于重新创建以下场景的命令:
mkdir testgit
cd testgit
git init
vim README
git add README
git commit
git checkout -b branch1
vim foo
git add foo
git commit
git checkout master
git checkout -b branch2
vim bar
git add bar
git commit
git checkout master
vim baz
git add baz
git commit
vim baz
git add baz
git commit
git checkout branch2
git merge --no-ff branch1
git checkout master
git merge --no-ff branch2
在这一点上我真的很难过,非常感谢任何指点。