私は約 7 年間、Git を多用しています。数日前、私は驚くべき振る舞いを見つけました。を見つけgit log
、この奇妙な動作を示しgit blame
ました。友人が私の問題を解決したフラグについて教えてくれました。私自身の教育のために、 と の同等の修正があるかどうかを知りたいです。git bisect
--full-history
git log
git blame
git bisect
このレポで問題を確認してください: https://dl.dropboxusercontent.com/u/1927707/problematic_repo.7z
そのログは次のとおりです。
$ git log --graph
* commit b7a8d7aa001d06eb7491ab5fb447a8dd3aa421a8
| Author: Ram Rachum <ram@rachum.com>
| Date: Tue Apr 19 17:45:01 2016 +0300
|
| adding more to some-file
|
* commit 0aa833916e908ea93902a6c4c227f9a884a1bcef
|\ Merge: 2413945 3068c7d
| | Author: Ram Rachum <ram@rachum.com>
| | Date: Tue Apr 19 17:44:31 2016 +0300
| |
| | Merge branch 'master' into development
| |
| * commit 3068c7d2548f1798b6840f73b13a649937339f28
| | Author: Ram Rachum <ram@rachum.com>
| | Date: Tue Apr 19 16:02:27 2016 +0300
| |
| | Adding sugar to coffee
| |
* | commit 24139451ab954b1f0a9ef616775a3dba0ac81669
|/ Author: Ram Rachum <ram@rachum.com>
| Date: Tue Apr 19 16:01:28 2016 +0300
|
| Creating some-file
|
* commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <ram@rachum.com>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
最初のコミットで、ファイルcoffee
が追加されました。commit3068c7d
で、「sugar」という行をcoffee
ファイルに追加しました。しかし、その後、このブランチをdevelopment
ブランチにマージしましたが、そのマージでミスが発生し、「sugar」行が削除されてcoffee
空のままになりました。その後、別の commitb7a8d7a
が追加され、無関係な変更が加えられました。
今、私は自分のコーヒーを見て、砂糖が入っていないことを発見しました. コーヒーに砂糖を入れたことをはっきりと覚えています。を実行するgit log coffee
と、次の出力が得られます。
$ git log coffee
commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <ram@rachum.com>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
それでおしまい。git log
砂糖を追加した元のコミットも、それを削除したマージも示していません。欠落している 2 つの非常に関連性の高いコミット。
手動でコミットを見つけるのがはるかに難しい大規模なエンタープライズ リポジトリで発生したため、この問題に約 1 時間イライラしました。
また、 と を使用して 2 つのコミットを特定しようとしましたが、これらのツールはどちらも 2 つのコミットを無視しましたgit bisect
。すべてのandアクションを完了した後、間違ったコミットを指摘してくれました。git blame
git bisect
git bisect bad
git bisect good
--full-history
それから、最初に言ったように、友人が私を旗に向けました:
$ git log --full-history --graph coffee
* commit 0aa833916e908ea93902a6c4c227f9a884a1bcef
|\ Merge: cf02fbb 3068c7d
| | Author: Ram Rachum <ram@rachum.com>
| | Date: Tue Apr 19 17:44:31 2016 +0300
| |
| | Merge branch 'master' into development
| |
| * commit 3068c7d2548f1798b6840f73b13a649937339f28
|/ Author: Ram Rachum <ram@rachum.com>
| Date: Tue Apr 19 16:02:27 2016 +0300
|
| Adding sugar to coffee
|
* commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <ram@rachum.com>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
関連する 2 つのコミット (砂糖を追加するコミットとそれを削除するマージ) が示されているので、これは嬉しいことです。だから私の問題は解決しました。でも、作り方や振る舞い方も知りたいです。git bisect
git blame
誰かがたまたま知っていますか?