0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[SourceTree]Gitで過去の修正を無かったことにする操作2選

Last updated at Posted at 2025-02-28

概要

Git管理されたプロジェクトで過去のコミットを消したい場合、主に2パターンの方法があります。その手順をここにまとめます。

過去の履歴を書き換えるこれらの操作は、複数人で取り組んでいるプロジェクトなどで問題につながる可能性があります。十分注意して、これらの操作をしても大丈夫な事を確認してから行ってください。

本文

準備した環境について

コミットごとに1つのtextファイルを追加していき、5つのtextファイルを作成しました。これを使って動作を確認していきます。

スクリーンショット 2025-03-01 062256.png

スクリーンショット 2025-03-01 062324.png

リバート

過去の特定のコミット1つをピンポイントで消します。(削除した痕跡は履歴上に残ります)

消したいコミットを選択して右クリック。このコミットを打ち消し(macの場合はコミット適用前に戻す)を選びます。

スクリーンショット 2025-03-01 062443.png

これでno3.txtファイル追加のコミットがピンポイントで消えました。
スクリーンショット 2025-03-01 062524.png

履歴には「コミットを消した」ログが残ります。

スクリーンショット 2025-03-01 062515.png

リセット

今度は特定のコミットまで巻き戻る形でコミットを削除します。巻き戻りなのでその過程のコミットはすべて削除され、「削除した履歴」は残りません。

さかのぼりたい地点を選択して右クリック。現在のブランチをこのコミットまでリセット(macの場合は~をこのコミットまで戻す)を選びます。ポップアップが表示されるので、モードを選択します。3つのモードそれぞれで挙動が変わりますが、今回は「Hard」を選びます。

スクリーンショット 2025-03-01 065016.png
これで選択していた「no2.txt追加」をコミットしたタイミングまで戻ることができました(それ以降の操作はすべて消えています)

スクリーンショット 2025-03-01 065819.png
履歴を見るとリモートにプッシュした分(origin/feature/test005)は残っていますがローカルの履歴(feature/test005)は綺麗に巻き戻っているのが確認できます。「削除した履歴」も残っていません。

スクリーンショット 2025-03-01 065150.png

変更をリモートにプッシュする時警告が表示されると思います。(リモートに存在する履歴を消そうとする操作に対して注意を促してくれています)その時は強制プッシュ(フォースプッシュ)をすればリモートも更新することができます。安全を確認したうえで行ってください:open_hands_tone2:

フォースプッシュをしたら、リモートリポジトリも無事巻き戻った状態になりました。

スクリーンショット 2025-03-01 215553.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?