2011-01-29 122 views
5

可能重复:
Git - Create a branch with current changes将创建一个Git分支删除我的本地修改

我已经做了我的项目一大堆工作,我意识到应该在另一个已经完成科。如果我现在创建一个分支,我的当前更改是否需要签入,或者在创建新分支时将它们擦除?我对GIT很陌生,只是想避免犯一个新手的错误。

+2

相关:http://stackoverflow.com/questions/389962 7/git-create-a-branch-with-current-changes – Dogbert 2011-01-29 10:15:12

+1

你是否已将更改提交到当前分支,或者他们只是躺在工作副本中? – 2011-01-29 13:34:57

+0

这些更改只是放在我的工作副本中。 – Nippysaurus 2011-01-30 02:33:32

回答

7

如果创建当前磁头使用一个新的分支:

$ git checkout -b newbranchname 

然后更改将不会被覆盖。

+1

非常正确,只要OP尚未对错误的分支提交任何更改。要理解的重要一点是分支仅仅是一个指向提交的指针,所以当你这样做时,你所做的只是创建一个指向当前提交的新指针并检出它 - 但由于它是相同的提交,它根本不需要触摸你的工作树。 – Cascabel 2011-01-29 15:40:55

1

他们将被移动到新的分支。但是如果你觉得不安全,你可以先备份当地的项目目录。

2

在你的情况,bdonlan的答案适用,因为创建一个新的分支不会触及工作目录。

在更一般的情况下,如果您尝试切换仍然存在工作目录更改的分支,Git会警告您并中止。无论哪种方式,最好不要失去变化。

在这种情况下,移动未提交的工作目录更改为一个新的分支,首先将它保存到Git的藏匿处:

git stash save 

然后创建和检查分支:

git checkout -b new-branch-name 

然后弹出您的工作目录从Git存储更改:

git stash pop 
相关问题