😎

【Git】ブランチの履歴を削除する

2023/06/28に公開

はじめに

Git学びたての方(自分含む)に向けて、ブランチに付加されている履歴の削除方法を纏めました。
※履歴の改変は、チームメンバとコミュニケーションを取りつつ、注意して行うようにしてください。

新しいリポジトリを作成する

これは最も簡単な方法で、現在の作業ディレクトリの状態をそのままに、新しいGitリポジトリを作成します。これにより、過去の全てのコミット履歴が削除されます。

rm -rf .git  # 現在のリポジトリの.gitディレクトリを削除
git init  # 新しいリポジトリを初期化
git add .  # 全てのファイルをステージングエリアに追加
git commit -m "Initial commit"  # 新しい初期コミットを作成

git rebaseを使用する

`git rebase`を使用して特定のコミットまでの履歴を削除することも可能です。以下のコマンドは、最新のコミットから数えて100個前のコミットまでの履歴を削除します。(この数字は、存在するコミット数の範囲内で設定しないとエラーはきます)
git rebase -i HEAD~100

これによりエディタが開き、最新の100個のコミットが表示されます。ここで、削除したいコミットの行のpickdropに変更します。全てのコミットを削除する場合は、全ての行をdropに変更します。変更を保存してエディタを閉じると、指定したコミットが削除されます。

リモートブランチに強制push

本変更をリモートリポジトリに反映したい場合は-fオプションを付けて強制pushします。
bash git push origin temp_branch:old_branch -f

ここで、temp_branchは初期化したブランチの名前を、old_branchは履歴を削除したいリモートブランチの名前を指定します。

Discussion