0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHubの不必要なファイルを削除する方法

Posted at

はじめに

GitHub上でプルリクを送った時、GitGuardianのチェックを引っ掛かる時があります。その時に引っ掛かったsenstiveなファイルをgit履歴上から完全に削除する方法を書きます。

git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch INSERT_PATH_TO_FILE_HERE" \
--prune-empty --tag-name-filter cat -- --all
実行例
git filter-branch -f --index-filter \
'git rm --cached -rf --ignore-unmatch bin/conf.txt' \
--prune-empty --tag-name-filter cat -- --all

git filter-branchで使うオプション

git filter-branchはオプションがたくさんつくので、非常に見づらいですね。
そこで、オプションの機能を一覧でまとめました。

オプション 機能
--setup [command] 実行直前に1回限りコマンドを実行する
--subdirectory-filter [directory] 指定されたサブディレクトリに関連する履歴のみ調べる
--env-filter [command] 環境変数を変更するなどコミットが実行される環境を変更する必要がある場合にのみ使用。
--tree-filter [command] 各チェックアウトに対してコマンドを実行し、結果を再コミット
--index-filter [command] インデックス上で、各チェックアウトに対してコマンドを実行し、結果を再コミット
--parent-filter [command] コミットの親リストを書き換えるためのフィルター
--msg-filter [command] コミットメッセージを書き換えるためのフィルター
--commit-filter [command] コミットごとのform用のフィルター
--tag-name-filter [command] --tag-name-filter catで使用し、タグを変更せず、タグが紐付けされているコミットIDを上書きする
--prune-empty 空のコミットを削除
--original [namespace] 元のコミットが保存される名前空間を設定できる
-d [directory] 書き換えに使用される一時ディレクトリへのパスを設定できる
-f or --force filter-branchは実行ディレクトリが一時ディレクトリである場合、refs/original/に既にバックアップが存在する場合は実行できないので、強制的に実行する必要がある
--state-branch [branch] 退避用ブランチを指定できる。branchが存在しない場合は作成される
[rev-list options]…​ git rev-listの引数。このオプションに含まれるすべての参照が書き換えらる
--all すべてのブランチを指定
HEAD チェックアウトしている(今自分が作業している)ブランチを指定

※commit前に一時的にステージングする場所がindex

引用元: git-filter-branch

pushする

下記のコマンドを実行しないと、GitHubに反映されないです。

git push origin --force --all
0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?