2012-05-10 16 views
0

GitはSCMの素晴らしい獣です。しかし、私はいつまでも問題に困惑しています。git rmとgit checkoutの後でもGitはファイルを追跡していません

私は.gitignoreにあり、originmasterブランチにはありません(git show -- config/mongo.yml経由)の設定ファイルを持っています。しかし、origin/masterからチェックアウトされた私の支店では、何とかファイルが追跡されていて、git rmgit checkoutが再びorigin/masterから出ても、そのファイルは私のレポに残りますが、私のチームの他の人にとっては消えます。私もgit rm --cachedを走り、最後の手段として、私は走った:

私は無視されたファイルに良い効果に何度も使用しており、分岐がやり直しに十分小さかった
git update-index --assume-unchanged -- config/mongo.yml 

。しかし、これは修正ではないようです。私は本当にこれの "理由"を知りたいのですが、その解決策の3/4だから問題を理解しています! :)

私は.gitignoreでそれを持つことができましたし、git rm config/mongo.ymlgit checkout origin/master -- config/mongo.ymlの後に追跡されますか?何かが変だときに私が試した

+0

正確な答えがわかりませんが、ブランチ競合が発生している可能性があります.1つのブランチがファイルを追跡していて、別のブランチがファイルを追跡していません。あなたは** Gitの状況をするとき、あなたは何を得るのですか** –

+0

#変更をコミットする: #(unstageする "... GitのリセットHEAD " を使用) # #\t新しいファイル:設定/ mongo.yml –

+0

git rmとgit rm --cachedはファイルを完全に削除する必要があるので、これは私の理解では起こりません。 –

答えて

0

もの:

.gitignoreからファイルを削除し、それがそのファイルを持っていない(と.gitignoreでそれを持っていません)コミットに切り替えます。

git ls-files --cached --ignored --exclude-standardすべてのチェックアウトで、私は説明に問題があります。とにかくそれを何度もやります。

git log --all --decorate --oneline --graph path/to/your/cuckooこれは、ファイルの状態や内容が変更された場所をすべて示します。あなたはgitkに同じことをさせて、新しいViewを立ち上げることができます。

また、近隣ディレクトリに複製すると、チェックアウトされたコンテンツ以外のすべてがハードリンクされるので、スペースは問題になりません。それはあなたの現在のもので状態を失うことなく、あなたがそこに実験することができ、git clean -dfxを任意の厄介なものをきれいにすることなく、あなたに初期のワークツリーを手に入れるでしょう。

関連する問題