LoginSignup
5
7

More than 3 years have passed since last update.

【Git】過去のコミットから特定のファイルを削除したい。GitHubからも

Posted at

はじめに

GitHubにpushしてはいけないファイルをコミットしてしまっていた場合に、その履歴をまとめて修正したい場合、どうすればいいかを学んだ。
途中でエラーがでたところもあったので、その解決方法も書く。

手順

安全に行う為、ブランチを切る

git checkout -b delete-check

そのブランチ上で、試す

今回は例として.envファイルを削除する。

git filter-branch --tree-filter 'rm -f .env' HEAD 

filter-branch --tree-filterで各コミットに対し、その後に続く、rm -f .env' HEADのコマンドを実行する。

出力結果
WARNING: git-filter-branch has a glut of gotchas generating mangled history
     rewrites.  Hit Ctrl-C before proceeding to abort, then use an
     alternative filtering tool such as 'git filter-repo'
     (https://github.com/newren/git-filter-repo/) instead.  See the
     filter-branch manual page for more details; to squelch this warning,
     set FILTER_BRANCH_SQUELCH_WARNING=1.
Proceeding with filter-branch...

Rewrite 7575dc6065c2dbbeef43df034dbe859f5a078 (1/6) (0 secoRewrite 98d96539c8c44062b280efc10e588a99b41b (2/6) (0 secoRewrite 25c2d7bc0e4d3fe23553c7b7607306c300c2dc (3/6) (0 secoRewrite d47862db7be1ab51df7b5e09f351abbf7b (4/6) (0 secoRewrite 2d0e1d8d96a19d35bc3a4453bc653c0cdc3ec5 (5/6) (0 secoRewrite 3fee6b5c30b9ddf9432de818cc5d9d20b13e0 (6/6) (0 seconds passed, remaining 0 predicted)
Ref 'refs/heads/delete-check' was rewritten

こういった出力になり、上書きされていることがわかる。

masterブランチで実行する。

安全のために切ったdelete-check上で実行できることがわかったので、次にmasterブランチ上で同じコマンドを実行する。

git filter-branch --tree-filter 'rm -f .env' HEAD 

すると、


Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f

というエラーになり、

前のバックアップがあるから、上書きしたいんやったら -f つけて

と言われたので、

git filter-branch -f --tree-filter 'rm -f .env' HEAD 

-fをつけて実行すると成功。

GitHubにプッシュ

git push -f origin master

これでローカル、リモートどちらも上書きされる。

終わりに。

最後まで読んで頂きありがとうございます:bow_tone1:
転職の為、未経験の状態からReact,Railsを学習しております。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございました。

5
7
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
5
7