[TurtoiseGit]修正をなかったことにする方法

「修正をなかったことにする」タイミングは3つあります。

  • まだコミット前(楽勝)
  • まだプッシュ前(軽傷)
  • プッシュしちゃった!(重傷)

この3つの状況に合わせ、それぞれの戻し方を試してみます。

下準備

以下のようなスモール環境で実験してみましょう。(TurtoiseGit さえあれば可能です)

ローカルに git リポジトリを作成

適当な空フォルダ(test.git とします)を作成し、右クリック > Git ここにリポジトリを作成(Bare を作成に ✔)

ローカル git リポジトリをクローン

ここでは適当に D:\temp 下に作成しました。右クリック > Git クローン(複製)

テキストファイルを1つ作成し、コミット&プッシュ

0123456789 とだけ書かれた a.txt を作成し、(1) としてコミット&プッシュ

右クリック > ログを表示 でコミットログを確認するとこのようになっています。

ここまでで下準備は完了です。

「編集してしまったテキスト」をやり直す(コミット前)

この場合は楽勝。
a.txt右クリック > TurtoiseGit > 変更の取り消し で元通り。

変更した内容を取っておきたい場合は、どこか Git 範囲外にコピーしておきましょう。

コミットを元に戻す

コミットしてしまった場合は、クローンディレクトリを 右クリック > Git同期

コミットを選択して 右クリック > このコミットの変更を戻す

OK

ファイルが再び!マークに戻っており、コミットウィンドウを開くとコメントには「Revert "(2)"」と書かれ、再びコミット可能になっています。

正しくは「(2) のコミットをなくす」のではなく、「(2) のコミットの上に (1) の(やり直し)コミットを追加する」といった方が正しいです。

この状態でプッシュしたログ履歴に、失敗したはずの (2) が含まれているのがわかります。

完全に消す方法もおそらく「なくはない」と思いますが、危険そう。

プッシュ

コミットのみならず、プッシュまでしてしまった…。重傷です。

基本的に「プッシュ」は絶対問題ないと判断した後、行うもの。やり直しはあまりオススメできません。
とはいえ、Git に慣れていない時ほどこういう「やらかし」をやってしまうもの。

Git フォルダを 右クリック > TurtoiseGit > ログを表示

(1) を選択 > 右クリック > "main" をここへリセット > Hard

強制的に(1)まで戻します。

(1) を選択 > 右クリック > "main" をここへリセット > Mixed

コミット&プッシュする前に戻します。(1) の後、編集したテキストも残ります。

注意点

ローカルを戻すことは出来ましたが、プッシュしたリポジトリは (2) のままです。
(ここを間違えると、色々と死ぬので注意してください)

複数人で使っている Git リポジトリのやり直しは、間が悪いと「Git 平行世界線」が出来上がってしまい、他のスタッフと違う世界線で永遠に出会えない…という最悪の事態を引き起こすことがあります。

そのため、本当に必要になった場合は Git に詳しい人にお伺いを立て、言われた通りにするのが無難です。

一番いいのは、適当にプッシュしないこと

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA