【发布时间】:2016-12-17 05:10:13
【问题描述】:
尽管使用 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
然后当我签出另一个分支时,我可以看到文件bar.txt 也已在那里修改:
$ git checkout foobar
$ git status
modified: quux.txt
我已经知道这种行为允许我选择要将更改提交到哪个分支,但我觉得这很烦人。我怀疑我无法理解 Git 分支背后的基本思想。有没有办法告诉 git,当我对 master 进行更改时,我不希望它们在我可能选择结帐的任何其他分支中可见?
【问题讨论】:
-
-
我的问题是,为什么我会因此而削弱 git?为什么当我结帐分支
b时,我在分支a中所做的更改是可用的,这是一个好主意。这是什么理想的功能? -
因为需要做什么和应该提交到哪个分支是两个独立的问题。