Git でマージを元に戻す
このチュートリアルでは、Git でマージを元に戻す方法について説明します。
Git では、あるブランチを別のブランチとマージして、他のブランチからの変更を現在のブランチの HEAD
に統合します。
場合によっては、このマージを元に戻したいことがあります。Git コマンド git reset
を使用して、git マージを元に戻すことができます。
これを例を挙げて説明します。
Git で git reset
を使用してマージを元に戻す
ブランチ viz をマージしたとします。feature1
と main
ブランチを使用して、そのブランチからの変更を main
ブランチに統合します。
ここで、このマージを元に戻すことにしました。これには git reset
を使用できます。
まず、Git のログからマージ前の commit sha
を見つける必要があります。これには、git log
コマンドを使用できます。
次のように git log
コマンドを実行します。
$ git log --oneline
0e25143 Merge branch 'feature1'
23ad9ad Add the initial code base
0e25143
は、feature1
ブランチから main
ブランチへのマージの commit sha
であることがわかります。23ad9ad
は、ブランチ feature1
をマージする前のコミットの commit sha
です。
git reset
コマンドを --hard
オプションとともに使用して、main
ブランチをマージ前の状態にリセットします。
git reset
コマンドの構文は次のとおりです。
git reset --hard commit_sha_before_merge
次のように git reset
を実行します。
$ git reset --hard 23ad9ad
したがって、マージを元に戻しました(つまり、現在のブランチの HEAD
をリセットしました)。マージ前のコミットへの main
。
上記の git reset
コマンドを実行すると、コミットされていない変更や隠されていない変更は失われることに注意してください。
特に最後のコミットがマージの場合は、次のように git reset
コマンドを使用することもできます。
$ git reset --hard HEAD~1
1 回のコミットで現在のブランチの HEAD
をリセットします。
同様に、次のようにすることもできます。
$ git reset --hard ORIG_HEAD
ORIG_HEAD
は、マージが行われる前のコミットを指します。
より安全なオプションは、次のように --merge
オプションを git reset
とともに使用することです。
$ git reset --merge ORIG_HEAD
git reset
コマンドを使用した --merge
オプションにより、インデックスがリセットされ、commit と HEAD
の間で異なるファイルが更新されます。ただし、インデックスと作業ツリーの間で異なるファイルの変更(つまり、まだインデックスに追加されていない変更)は保持されます。
関連記事 - Git Reset
- Git RM -- キャッシュと Git リセット ファイルの違い
- Git のリセット、元に戻す、およびチェックアウト コマンドの違い
- ローカル Git の変更を削除するために使用されるさまざまな方法
- 開発ブランチをマスター ブランチと同一にする
- 競合のある Git マージを元に戻す
- Git の変更を元に戻す