2017-01-29 55 views
0

私は2つのブランチを持っています:masterwebと私は1つのディレクトリに自分の作業コピーを持っています。 webブランチ私はfooのフォルダを持っています。私はfooのファイルに取り組み、私は仕事をしました。Git:2つのブランチを切り替えるときにファイルが残る

git checkout master 

しかしfooフォルダは私の作業コピーにまだそこにある。そして、私はmasterに切り替えます。それは奇妙に見えます!マスターブランチのGit statusは、すべてが問題ないと私に伝えます。しかし、フォルダfooは、masterブランチに属していません。たとえ私がしても

git checkout . 

webフォルダーは私の作業コピーにとどまります。 I rmwebフォルダーを修復する。今、git statusは、すべてがうまくいっていることを伝え続けています。

しかし、それは起こっていた可能性があり、どうすればそれを避けることができますか?

+1

[git clean](https://git-scm.com/docs/git-clean)コマンドをご覧ください。 Gitはファイルトラッカーなので、ブランチを切り替えたときにフォルダがそこに残っています。 -dオプションを指定してgit cleanを実行すると、ディレクトリは削除されますが、git clean -nを実行すると、他のバリアントを実行する前に何が起こるかを確認することを強くおすすめします。 – rasmeister

+0

私が奇妙に見えるのは、通常、ブランチに切り替えるたびに作業コピーが変更されるということです。古いブランチのすべてのフォルダが消え、新しいフォルダが表示されます。それは私がしたいことですが、それは私が記述した問題の場合ではありません。 – floatingpurr

答えて

0

あなたはfooにファイルを持っていると思いますが、これもマスターに委ねられています。フォルダがバージョン管理されていない場合ls-filesコマンドは空を返す必要があり

git checkout master 
git ls-files foo 

git checkout web 
git ls-files foo 

の出力を比較します。しかし、私はあなたがとにかく出力を得ると思います。

Gitは、どのフォルダがブランチに対して排他的であるかを追跡し、ブランチを切り替えるときにそれらを削除します。 git statusは、.gitignoreにないすべての未追跡ファイルについても報告します。

+0

'git ls-files foo'は' master'で空です。 'foo'は常に 'web'専用です。私はgitを慎重に使用していますが、これがどうなったのか分かりません。原子の欠陥かもしれない?私はbash経由でブランチを切り替えていますが、プロジェクトを原子で可視化しています... – floatingpurr

+0

マスターブランチからの 'ls -al foo'の出力は何ですか? –

+0

'このようなファイルやディレクトリはありません。'しかし、私が記述したように、私の作業ディレクトリを最後の 'master'コミットに合わせたままにするためにフォルダを手動で' rm'します。 – floatingpurr

関連する問題