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」をマスターに導入したコミットを見つけたいと思います(f77cac3である必要があります)。ただし、実行git log --foo
すると 90ab3e3 が返されます。ブランチ 1 とブランチ 2 のファイル foo に複数の変更が加えられた、より複雑なケースでは、それらのコミットはすべて表示されますが、マージ コミットは表示されません。私はgitのヘルプを読んだり、スタックオーバーフローでグーグル検索したり検索したりしましたが、これを行う方法が見つかりません。
以下のシナリオを再現するために使用できるコマンドは次のとおりです。
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
私はこの時点で本当に困惑しています。