2011-06-30 11 views
141

私はGithubでホストされているgitリポジトリを持っています。多くのファイルをコミットした後、.gitignoreを作成し、.exe,.objというファイルを除外する必要があることを認識しています。コミット後のgitignore

ただし、これらのコミットされたファイルはリポジトリから自動的に削除されますか?それを強制する方法はありますか?

+0

今後のGooglerはこれを見つけることが非常に便利です。簡潔でポイントに:https://www.git-tower.com/learn/git/faq/ignore-tracked-files-in-git –

答えて

235

ありませんあなたはすでにレポにコミットされたファイルを強制することはできませんが、単に削除されますレポ。ですから、あなたのレポからすべてのexeファイルのを削除したい場合は

git rm --cached /\*.exe 

は(アスタリスク*から引用されていることに注意してくださいません(おそらくローカルコピーを保持しますが。レポから削除するので、--cached)シェル - これはシェルではなくgitにファイルとサブディレクトリのパス名を展開させます)

+0

個々に.exeを個別に削除することを意味しますか? –

+5

@Madhur Ahuja実際に 'git rm/\ *。exe'を実行すると、 – manojlds

+3

/は何ですか? – Costa

23

ただし、これらのコミットされたファイルはリポジトリから自動的に削除されますか?でも、既存の.gitignore

いいえ、あなたは-f(強制)フラグを「無視」ファイルを上演することができます。すでにコミットされているファイルは、自動的に削除されません。それはあなたがしたくないファイルを削除するには、git rm --cachedに持って.gitignore

に追加されているため

git rm --cached path/to/ignored.exe 
+0

それは私が個々に.exeを個別に削除することを意味しますか? –

+0

あなたはおそらくこれを一括して行うことはできますが、私はこれがどのようにウィンドウ下で動作するのか分かりません。 – KingCrunch

5

ただし、これらのコミットされたファイルはリポジトリから自動的に削除されますか?

このgit filter-branchを使用しているを行うための '最良' のレシピがここで書かれた番号:gitのフィルタ分岐用

manページ包括的な例を含んでいる。

注:あなたは履歴を書き換えます。誤って追加されたファイルを含むリビジョンを公開していた場合、これらの公共支店のユーザーに問題が発生する可能性があります。あなたに知らせるか、ファイルを削除する必要があるかについて考えてみてください。

注記タグがある場合は、git filter-branchには常に--tag-name-filter catオプションを使用してください。

+0

このコマンドを実行したときに表示されたリライト57c1f1f04a3ed01f50c3260714cfc82c973ac816(3/3) 警告:ref 'refs/heads/master'は変更されず、何も起こりません –

+0

これは警告で、おそらくマスターブランチには削除するファイルのリビジョン。あなたはそれを簡単にチェックすることができます。問題がある場合は、質問を更新してください。 ** PS:**すべての(ローカル)ブランチを一度に書き直すには '--all'を使います – sehe

+0

リンクはもうアクティブではないようです... – Noctis

1

ファイルを削除してからコミットしても、それらのファイルはまだ履歴に残っています。それらを削除するには、BFG Repo-Cleanerを使用することを検討してください。これはgit-filter-branchの代わりです。

5

私は削除する必要がありました。アイデアとターゲットフォルダとすべてのコメントを読んだ後、これは私の仕事:

git rm -r .idea 
git rm -r target 
git commit -m 'removed .idea folder' 

をして、あなたはすでに変更がプッシュされていない場合は

1

を習得するためにプッシュする:

git rm -r --cached . 
git add . 
git commit -m 'clear git cache' 
git push 
関連する問題