在git中安全地切换分支

问题描述

| 我在master分支上,想使用一项新功能,所以我这样做:
git checkout -b new_feature
现在我正在编码,执行git status显示文件修改。 如果我尝试移至master分支,它说我无法b / c更新的文件。 好的,我将添加它们:
git add -A
现在,如果我尝试跳至master分支,似乎需要合并???
git checkout master
我想知道如何做的是: 在另一个分支中,我想停止正在做的事情并移至master分支,而不是合并任何东西,我只想停止在新功能分支上工作,然后回到master。     

解决方法

您有两个选择(至少)。一个“正在进行的工作”提交或隐藏。 “正在进行的工作”提交就是这样:它是代表未完成工作的分支中的提交:
$ git commit -am\'WIP (description here)\'
$ git checkout master
稍后,当您回到分支机构时,可以继续工作并提交:
$ git checkout mybranch
# do work
$ git commit -am\'Finish WIP (description here)\'
完成后,您可以根据需要将\“ WIP \”提交合并到一起,成为连贯的提交,而无需证明您已完成部分工作:
$ git rebase -i HEAD~2    # See instructions for rebase -i elsewhere
或者,您可以使用存储:
$ git add .
$ git stash save \'WIP (descriptino here)\'
$ git checkout master
稍后,当您回到分支机构时:
$ git checkout my_branch
$ git stash pop
您会从上次停下来的地方走对。     ,
git stash
可能是您想要的。     ,看来,您忘记了将索引中的“ 10”更改为“ 9”。
git add <something>
git commit
git checkout master
    ,通过执行git add -A,您只是将更改添加到索引中-也就是说,您告诉git这些更改是您执行git commit之后将提交的更改。您实际上没有执行任何操作,因此当您尝试签出其他内容时,git会警告您,因为您会丢失索引。 git commit -m \“您的提交消息\”会将已索引的更改添加到new_feature顶部的树中,并将其从索引中删除,因此您可以自由地在之后切换分支。 Git隐藏是另一种选择,但是取决于您对new_features所做的更改产生冲突的可能性,您可能更愿意进行一次提交(然后可以重置--mixed HEAD〜1以便一次提交而不更改工作复制)。