#Git はマージされたコミットの複数の状態を元に戻します
ブランチのマージは Git の一般的な操作ですが、間違ったコミットが誤ってメイン ブランチにマージされる場合があります。この時点で、マージされたコミットを元に戻して、正しい状態を復元する必要があります。この記事では、コミット レコードが最新のものであっても途中のものであっても、Git でマージされたコミットを元に戻す方法を紹介します。
最新のマージされたコミットを元に戻す
最新のマージ コミットを元に戻す場合は、git revert
コマンドを使用して、誤った変更を元に戻す新しいコミットを作成できます。
まず、
git log
コマンドを使用してコミット履歴を表示し、最新のマージ コミットを見つけます。
$ git log
commit c3d2e9a4e2a1e285ff4d8f06e01d4e3f19b532ea (HEAD -> master)
Author: Hanmeimei <[email protected]>
Date: Fri Jun 30 15:26:43 2023 +0800
Incorrect merge commit
commit 3e5fb8a7b631eb6492ef32e28a813084d4d3de2b
Author: Lilei <[email protected]>
Date: Thu Jun 29 18:20:56 2023 +0800
Correct commit
...
上の例では、最新のバグのあるマージ コミット ( Incorrect merge commit
) を確認できます。
このコマンドを使用して
git revert
マージ コミットを取り消し、新しいコミットを作成して正しい状態に戻します。
$ git revert c3d2e9a4e2a1e285ff4d8f06e01d4e3f19b532ea
Git は自動的に新しいコミットを作成し、間違ったマージ コミットを元に戻します。
git log
またはコマンドを使用してgit show
新しいコミット履歴を検証し、誤った変更が元に戻されていることを確認します。
$ git log
commit b254d0f063b4ab4e7b78fb42015e0c55e0e98712 (HEAD -> master)
Author: Hanmeimei <[email protected]>
Date: Fri Jun 30 15:46:28 2023 +0800
Revert "Incorrect merge commit"
This reverts commit c3d2e9a4e2a1e285ff4d8f06e01d4e3f19b532ea.
commit 3e5fb8a7b631eb6492ef32e28a813084d4d3de2b
Author: Lilei <[email protected]>
Date: Thu Jun 29 18:20:56 2023 +0800
Correct commit
...
Revert "Incorrect merge commit"
ここでは、最新の誤ったマージ コミットを元に戻す新しいコミット ( ) が作成されたことがわかります。
最新のマージされた複数のコミットを元に戻す
最新のマージの複数のコミットを元に戻したい場合は、git reset
コマンドを使用してコミットまでロールバックできます。手順は次のとおりです。
まず、
git log
コマンドを使用してコミット履歴を表示し、ロールバックするハッシュ値を見つけます。
$ git log
commit c5b890eee2edf9a353ec6bba0543e41d2529a8f8 (HEAD -> master)
Author: Hanmeimei <[email protected]>
Date: Mon Jul 3 15:12:10 2023 +0800
Incorrect merge commit
commit 82bcf43083a4dc8c87091ebde4dd5374f0c6e274
Author: Hanmeimei <[email protected]>
Date: Mon Jul 3 15:11:54 2023 +0800
Incorrect merge commit2
commit 60a52b00d0ee2703156231e209e8aad115919aee
Author: Hanmeimei <[email protected]>
Date: Mon Jun 26 06:32:35 2023 +0000
Correct commit
...
ここでは () へのロールバックが必要ですCorrect commit
。
このコマンドを使用して
git reset
マージ コミットを取り消し、新しいコミットを作成して正しい状態に戻します。
$ git reset --soft 60a52b00d0ee2703156231e209e8aad115919aee // 暂存区
$ git reset --hard 60a52b00d0ee2703156231e209e8aad115919aee // HEAD 指向此次提交记录
$ git push origin HEAD --force // 强制推送远端
注: この送信後の変更は予約されず、git status
ワークスペースを表示した記録はありません。
git log
最後に、またはコマンドを使用してコミット履歴を検証しgit show
、誤った変更が元に戻されていることを確認します。
$ git log
commit 60a52b00d0ee2703156231e209e8aad115919aee (HEAD -> master)
Author: Hanmeimei <[email protected]>
Date: Mon Jun 26 06:32:35 2023 +0000
Correct commit
...
誤って削除した場合は、次の方法を使用して復元できます。
$ git reset --hard 82bcf43083a4dc8c87091ebde4dd5374f0c6e274 // 误删的哈希值
HEAD is now at 82bcf4308 feat: Incorrect merge commit2
$ git push origin HEAD --force // 强制推送远端
中間マージコミットを元に戻す
マージ送信を途中で取り消したい場合は、git revert
コマンドを使用して、元に戻すコミット ハッシュ値を指定できます。
まず、
git log
コマンドを使用してコミット履歴を表示し、元に戻す中間マージ コミットを見つけます。
$ git log
commit 3e5fb8a7b631eb6492ef32e28a813084d4d3de2b (HEAD -> master)
Author: Lilei <[email protected]>
Date: Wed Jun 21 12:00:00 2023 +0000
Correct commit
commit a1b2c3d4e5f6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
Author: Hanmeimei <[email protected]>
Date: Fri Jun 18 12:00:00 2023 +0000
Incorrect merge commit
...
中間のエラーのあるマージ commit() はここで確認できますIncorrect merge commit
。
次に、
git revert
コマンドを使用してマージ コミットを元に戻し、新しいコミットを作成して正しい状態に戻します。
$ git revert a1b2c3d4e5f6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
Git は自動的に新しいコミットを作成し、間違ったマージ コミットを元に戻します。
最後に
git log
、 またはgit show
コマンドを使用して新しいコミット履歴を検証し、間違った変更が元に戻されていることを確認します。
$ git log
commit b254d0f063b4ab4e7b78fb42015e0c55e0e98712 (HEAD -> master)
Author: Hanmeimei <[email protected]>
Date: Mon Jun 28 12:10:00 2023 +0000
Revert "Incorrect merge commit"
This reverts commit a1b2c3d4e5f6a7b8c9d0e1f2g3h4i5j6k7l8m9n0.
commit 3e5fb8a7b631eb6492ef32e28a813084d4d3de2b
Author: Lilei <[email protected]>
Date: Wed Jun 21 12:00:00 2023 +0000
Correct commit
commit a1b2c3d4e5f6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
Author: Hanmeimei <[email protected]>
Date: Fri Jun 18 12:00:00 2023 +0000
Incorrect merge commit
...
以前の送信が に残りgit log
、この取り消しが新しい送信 ( Revert "Incorrect merge commit"
) として使用されることがわかります。
知らせ
元に戻す操作を実行する前に必ず結果を理解し、変更を加える前にバックアップを作成するか重要なデータを保存してください。
- 終わり -
Qi Wu 劇団について
Qi Wu Troupe は 360 グループ最大のフロントエンド チームであり、グループを代表して W3C および ECMA メンバー (TC39) の活動に参加しています。Qi Wu Troupe は人材育成を重視しており、エンジニア、講師、翻訳者、ビジネス インターフェース担当者、チーム リーダーなど従業員が選択できるさまざまな育成方向性を備えており、対応する技術、専門、一般、リーダーシップ トレーニング コースを提供しています。Qi Dance Troupe は、あらゆる種類の優れた才能に注目し、オープンで才能を求める姿勢で Qi Dance Troupe に参加することを歓迎します。