在git中安全地切换分支

Bla*_*man 8 git

我在主分支上,并且想要处理一个新功能,所以我这样做:

git checkout -b new_feature
Run Code Online (Sandbox Code Playgroud)

现在我正在编码,做一个git状态显示修改的文件.

如果我尝试移动到主分支,它说我不能b/c更新的文件.

好的,我会添加它们:

git add -A
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试跳转到主分支,它似乎想要合并???

git checkout master
Run Code Online (Sandbox Code Playgroud)

我想知道怎么做的是:

  1. 而在另一个分支中,我想停止我正在做的事情并转移到主分支,而不是合并任何东西,我只是想停止在新功能分支上工作并回到主控.

Way*_*rad 8

你有两个选择(至少)."正在进行中的工作"提交或存储.

"正在进行中的工作"提交就是:它是代表未完成工作的分支中的提交:

$ git commit -am'WIP (description here)'
$ git checkout master
Run Code Online (Sandbox Code Playgroud)

之后,当您回到分支机构时,您可以继续工作并提交:

$ git checkout mybranch
# do work
$ git commit -am'Finish WIP (description here)'
Run Code Online (Sandbox Code Playgroud)

完成后,如果需要,您可以将"WIP"提交合并到一致的提交中,而没有证据表明您已完成部分工作:

$ git rebase -i HEAD~2    # See instructions for rebase -i elsewhere
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用存储:

$ git add .
$ git stash save 'WIP (descriptino here)'
$ git checkout master
Run Code Online (Sandbox Code Playgroud)

之后,当你回到你的分支机构时:

$ git checkout my_branch
$ git stash pop
Run Code Online (Sandbox Code Playgroud)

你会离开你离开的地方.

  • @Blankman:请记住,当你使用存储时,Git不记得它应用于哪个分支(除非你把它放在存储描述中)并且当你回到`new_feature`分支时它不会提醒你重新应用它.使用提交通常更好,因为你告诉Git你打算用这些更改做什么. (2认同)