我在主分支上,想要处理新功能,所以我这样做:
git checkout -b new_feature
现在我正在编码,执行git状态会显示已修改的文件。
如果我尝试移动到主分支,它说我不能更新已更新的文件。
好的,我会添加它们:
git add -A
现在如果我尝试跳转到主分支,似乎想要合并???
git checkout master
我想知道怎么做:
答案 0 :(得分:8)
你有两个选择(至少)。 “正在进行中的工作”提交或存储。
“正在进行的工作”提交就是:它是代表未完成工作的分支中的提交:
$ 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
你会离开你离开的地方。
答案 1 :(得分:2)
git stash
可能就是您要找的。 p>
答案 2 :(得分:2)
您似乎忘了commit
对add
进行索引的更改。
git add <something>
git commit
git checkout master
答案 3 :(得分:0)
通过执行git add -A,您只需将更改添加到索引中 - 也就是说,您告诉git这些更改是您在执行git commit后将提交的更改。你实际上没有提交任何东西,所以当你试图检查其他东西git警告你,因为你会失去你的索引。 git commit -m“你的提交消息”会将索引的更改添加到new_feature之上的树中,并从索引中删除它们,这样你就可以在之后立即切换分支。
Git stash是另一种选择,但是根据你对new_features的更改产生冲突的可能性,你可能更喜欢进行提交(然后你可以重置 - 混合HEAD~1以便在没有提交的情况下提交改变你的工作副本。)