かなり長い間Gitを使用していたにもかかわらず、私はまだその分岐機構を理解することができません。特に、これらの簡単なコマンドによって初期化単一のファイルbar.txt
で新しいプロジェクトfoo
を考える:今すぐGitブランチを切り替えると、変更されたファイルはどうなりますか?
$ mkdir foo
$ cd foo
$ git init
$ touch bar.txt
$ git add .
$ git commit -m 'Initial commit'
私はブランチfoobar
を作成し、git branch
は、私はmaster
に残ってることを示しています
$ git branch foobar
$ git branch
foobar
* master
しかし、私は、ファイルbar.txt
に変更を加えるとき:
$ echo quux >> quux.txt
$ git status
modified: quux.txt
は、その後、私は他のブランチをチェックアウトするとき、私はファイルbar.txt
がまた変更されていることがわかります。
$ git checkout foobar
$ git status
modified: quux.txt
を私はすでに、この動作は、私は私の変更をコミットしたいんどの枝に選択することが私にできることを知っています、しかし、私はそれが迷惑なと思う。私はGit分岐の背後にある基本的な考え方を理解できないと思う。私がmaster
に変更を加えたときに、チェックアウトすることを選択できる他のブランチからそれらが見えないようにする方法を教えてもらえますか?
gitをこのようにしたいのであれば、ブランチを切り替える前に必ずコミットしてください。そしてWIPコミットがあればチェックアウト時にヒントをリセットしてください。 – jthill
私の質問は、なぜ私はこれによってgitを失神させるでしょうか?私がブランチ「b」をチェックアウトしたときに、ブランチ「a」中に行った変更が利用可能であるということは、なぜ素晴らしい考えですか?これは望ましい機能ですか? –
何が必要なのか、どのブランチをコミットすべきなのかは別々の2つの懸念事項です。 – jthill