2017-06-16 21 views
1

私のローカルGitリポジトリに〜50件のコミットがあります。偶然にも最初のコミットでは、私は.ideaフォルダをインクルードしました。今度は、最初のコミットからそのフォルダからすべてのファイルを削除する必要があります。これを達成する機会があれば可能でしょうか?以前のすべてのgitコミットから.ideaディレクトリを削除します

私は、以下のコマンドを試してみましたが、以前のコミットにリンクせずに別のコミットとして変換している

$ echo '.idea' >> .gitignore 
$ git rm -r --cached .idea 
$ git add .gitignore 
$ git commit --amend 
+0

で詳細を参照してくださいは危険なものです。いったんあなたがコミット&プッシュしたら、いくつかのレポ手術をする準備ができていなければ、それは多かれ少なかれ石になってしまいます。 – Adrian

答えて

2

あなたがこれを行うにはfilter-branchを使用することができます。

cp -r .idea .idea.bak 
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch -r .idea' --prune-empty --tag-name-filter cat -- --all 

これは、すべての過去から.ideaを削除しますコミットします。 その後、ファイルを のように更新して、間違って.ideaを将来追加することを避けることができます。

これは、リポジトリの履歴を書き換えることに注意してください。 公開されていて他の共同編集者がいる場合は、 は、これが本当に価値があるかどうかを慎重に考えてください。

Gitの歴史を改正 https://help.github.com/articles/removing-sensitive-data-from-a-repository/

+0

ありがとうございましたjanos、私は別の疑問を持っています。どのように複数の.DSStoreファイルをすべて削除するのですか? – 0x52616A657368

+0

@Venkat 'git filter-branch --force --index-filter 'git ls-files | grep /\\​​.DSStore$ | xargs git rm --cached --ignore-unmatch ' - prune-empty - タグ名フィルタcat - --all' – janos

関連する問題