他の人が foo の上に bar を作成したとしますが、その間に baz を作成してからマージし、
$ git ローラ
* 2582152 (HEAD、マスター) マージ ブランチ 'otherguy'
|\
| | * c7256de (otherguy) バー
* | | b7e7176 バズ
|/
* 9968f79 フー
注: git lolaは非標準ですが便利なエイリアスです。
サイコロなしgit revert
:
$ git revert HEAD
致命的: コミット 2582152... はマージですが、-m オプションが指定されていません。
チャールズ・ベイリーはいつものように素晴らしい答えを出しました。のように使用git revert
する
$ git revert --no-edit -m 1 HEAD
[マスター e900aad] 「マージ ブランチ 'otherguy'」を元に戻す
0 ファイルの変更、0 挿入 (+)、0 削除 (-)
削除モード 100644 バー
bar
の履歴を効果的に削除して生成します
$ git ローラ
* e900aad (HEAD、マスター) 「マージ ブランチ 'otherguy'」を元に戻す
* 2582152 マージ ブランチ 'otherguy'
|\
| | * c7256de (otherguy) バー
* | | b7e7176 バズ
|/
* 9968f79 フー
しかし、あなたはマージコミットを捨てたいと思っていると思います:
$ git reset --hard HEAD^
HEAD は現在 b7e7176 baz にあります
$ git ローラ
* b7e7176 (HEAD、マスター) baz
| | * c7256de (otherguy) バー
|/
* 9968f79 フー
マニュアルに記載されているようにgit rev-parse
<rev>^
例: HEAD^。v1.5.1^0
リビジョン パラメータ
のサフィックスは、そのコミット オブジェクトの最初の親を意味します。はn番目の親を意味します (つまり、 と同等です)。特別な規則として、コミット自体を意味し、コミット オブジェクトを参照するタグ オブジェクトのオブジェクト名である場合に使用されます。^
^<n>
<rev>^
<rev>^1
<rev>^0
<rev>
git reset
そのため、HEAD^
(またはHEAD^1
)を呼び出す前は、b7e7176 とHEAD^2
c7256de でした。つまり、それぞれマージ コミットの最初と 2 番目の親でした。
git reset --hard
作品を破壊する可能性があるので注意してください。