尽管我已经使用Git相当长的时间,但我仍然不理解它的分支机制。特别是考虑一个新项目
foo
,其中只有一个文件bar.txt
,通过这些简单的命令初始化:$ 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
然后当我切换到另一个分支进行checkout时,我发现文件bar.txt
在那里也被修改了:
$ git checkout foobar
$ git status
modified: quux.txt
我已经知道这种行为允许我选择要提交更改的分支,但我觉得它很烦人。我怀疑我没有理解Git分支背后的基本思想。有没有一种方法告诉Git,当我对master
进行更改时,我不希望它们在我选择检出的任何其他分支中可见?
b
时,我在分支a
中进行的更改可用是一个好主意。这是一种可取的功能吗? - Boris Stitnicky