Git分支无法工作,因为我期待

时间:2015-05-23 06:59:17

标签: git github

好吧所以我是新手使用git ..我认为我理解分支的概念,但现在我很困惑。

让我们说我有一位大师。

我创建了一个名为branch1的分支。

git checkout -b branch1

master
*branch1

我在branch1上做了一些更改,但我意识到在完成我在branch1上的工作之前我必须做一些其他事情。

所以我回到主人那里

git checkout master

*master
branch1

并创建一个名为branch2的新分支。

git checkout -b branch2

master
branch1
*branch2

由于我没有在branch1上提交我的更改,我希望我的branch2不会有branch1代码......但是我看到了branch1所做的更改。

我误解了什么吗?

2 个答案:

答案 0 :(得分:3)

  

由于我没有在branch1上提交我的更改,我希望我的branch2不会有branch1代码

所有分支的工作副本(暂存+未分级更改)都相同。而你所看到的不是branch1的变化,而是工作副本的变化。

在branch1中提交更改后,您将不再在branch2或任何其他分支中看到它们。

答案 1 :(得分:2)

虽然您在进行更改时处于branch1中,但这些更改实际上并不是"在" branch1直到你提交它们。

来自$ git help checkout

  

对工作树中的文件进行本地修改   保留,以便他们可以提交到< branch>。

另一方面,如果在切换回master之前将更改提交到branch1 ,那么当您$ git checkout master时,git会将工作目录中的文件还原为主人指向的快照,正如您所期望的那样。

如果出于某种原因,您确实希望避免将更改提交到branch1,但仍然在没有这些更改的情况下在不同的分支上工作,您可以考虑使用$ git stash来存储您的更改,然后切换到新的分支,做你需要的工作,然后切换回branch1并执行$ git stash pop以取回你的藏匿更改。