をファイルを無視しません無視する。.gitignoreは、私はプロジェクトとその構造は以下の通りです持って適切に
私.gitignore
ファイルがあります:
.gitignore
*.out
*.swp
/build/*
私はgit status
を実行すると、私は理解していないmodified: CMakeLists.txt
があります。 CMakeLists.txt
が無視されないのはなぜですか?なぜそれが無視されない唯一のファイルですか?
をファイルを無視しません無視する。.gitignoreは、私はプロジェクトとその構造は以下の通りです持って適切に
私.gitignore
ファイルがあります:
.gitignore
*.out
*.swp
/build/*
私はgit status
を実行すると、私は理解していないmodified: CMakeLists.txt
があります。 CMakeLists.txt
が無視されないのはなぜですか?なぜそれが無視されない唯一のファイルですか?
git ls-files --error-unmatch build/CMakeLists.txt
はエラーを表示しないため、build/CMakeLists.txt
ファイルが既にレポでトラッキングされていることを意味します。したがって、.gitignore
ファイルはそれ以上影響を受けません。 gitから削除するにはgit rm --cached build/CMakeLists.txt
を実行する必要があります。
ルールを無視する(.gitignore
のようなもの)は、にのみ適用されます。ファイル。追跡されたファイルへの変更は無視できません。人々はこのユースケースのために提案したいメカニズムがありますが、それらはすべて解決よりも多くの問題を引き起こします。
(そして、Gitはがを変更しています。ファイルのバージョンがインデックスにすでにあります意味ことを示していますので、我々は、問題のファイルを追跡していることを知っている。)
あなたはからファイルを削除した場合索引を無視してルールを適用できます。これは、このコミットから、ファイルののバージョンが含まれていないことを意味します。あなたが成功した全体build
ディレクトリをカバーするために無視したい場合は、ファイルがまだ(すなわち、他の枝に)他の「現在」のコミットに存在する場合、それはまだあるでしょう、もちろん
git rm -r --cached build
を言う(と可能性マージの方法であなたの現在の支店に潜入することができます)。
ファイルが存在することを意味せず、履歴書き直しが可能な場合は、BFG Repo Cleanerを使用して完全に取り除くことを検討してください。コミットIDを変更し、共同作業者にレポを置き換える必要があるという極端な解決策です。
基本的に、.gitignore
を.gitignore
ファイルに入れる理由はありません。通常、レポの一部として共有されるルールは無視したいが、そうでない場合は、.gitignore
の代わりに.git/info/exclude
を使用することができます。
指定された拡張子を持つファイルが指定されたパスの外側に存在しない限り、パスベースの除外と拡張子ベースの除外のための別個のエントリは必要ありません。
.gitignore
にディレクトリを追加します。
echo 'node_modules/' >> .gitignore
は.gitignore
にファイルを追加します。
echo 'config/constants.js' >> .gitignore
を、その後:
git rm -r --cached node_modules/
か:
git rm -r --cached config/constants.js
あなたの他のファイルを追加します。
git add .
か:
git add --all
それをコミットします。
git commit -m ".gitignore is now working"
最後レポにコードをプッシュします。
「git ls-files --error-unmatch build/CMakeLists.txt」コマンドの出力は何ですか? – skovorodkin
出力は 'build/CMakeLists.txt'です –
現在のGit作業ツリーからローカル(untracked)ファイルを削除する方法はありますか?(https://stackoverflow.com/questions/61212/how-to-remove -local-untracked-files-the-current-git-working-treeから) – phd