将未完成的更改从主分支移动到分支

问题描述:

最近我开始对主分支进行一些更改以添加featureX。我创建了1个新文件并编辑了6个其他文件。我没有犯过任何变化。目前,我想在一个单独的分支上工作在featureX上,并保持原版不变,直到我确信featureX能够正常工作。将未完成的更改从主分支移动到分支

我知道我应该在我开始为featureX做出这些更改之前开始一个新的分支,但无论如何,我已经对主分支进行了未提交的更改,并将其恢复为主分支featureX状态?

+2

实际上,你可以切换树枝和提交这些更改该分支,然后回到主。否则,你可以做'git stash'。 – birryree 2012-07-11 15:36:08

创建一个新的分支(git checkout -b your_new_feature)应该做的工作 - 否则,你可以试试这个:

git stash 
git checkout -b your_new_feature 
git stash apply 

你需要的是stash掉的变化,然后应用到其他地方:

git stash 
git checkout -b other_branch 
git stash apply 

了解更多关于git stashhere


正如我刚才了解到(和尝试过),可以真正地检出到你的分支和Git会记住哪些文件发生了变化。所以

git checkout -b other_branch 

应该足够了。


注意:重要的是也要学会git stash。在这种情况下,没有问题。但是,如果other_branch已经存在,它可能会有自己的更改,因此可能会有合并冲突。在这种情况下,简单地写

git checkout other_branch 

可能会失败,这样的消息:

error: You have local changes to 'whatever'; cannot switch branches.

在这种情况下,你应该使用上面的方法和git stash apply后,解决可能发生的冲突。

+0

这不是必需的,请参阅birryree评论 – CharlesB 2012-07-11 15:40:28

+0

@CharlesB,更新了我的答案。 – Shahbaz 2012-07-11 15:48:49