很有意思的问题:为什么做到一半的代码不能提交?
很棒的回答:
如果有些bug很紧急, 而你当前的修改只做到一半, 导致工程都无法启动起来,
这时当然是可以 git commit 或者 git stash
那两者有什么区别?
git commit 会在 git log 里面留下一次 log, 而你push之后别人是可以回退到你这个版本的, 不论什么原因, 如果别人到了你这个版本, 发现连工程都启动不起来, 自然会有很多疑问.
因此一次良好的 git commit 应该不要破坏工程的稳定性才对.
所以你不能把做到一半的代码进行 git commit.
(当然以上都是一些很理想的情况, 反正 git commit 也可以, 又不是不能用
bug分支管理
有这么一种情形,假如我们正在dev
分支工作,做到一半,突然上面出现一个紧急bug需要修复,这个bug是在master 分支开始出现的,我们该怎么做
分析过程,master有bug,dev是从master分出来的,这个bug在这必定存在,我们最好从源头分支修改bug,再顺着时间线将后面的分支同样修改
问题出现了,手头的代码要不要提交,上面解释过,最好不要,因为有git stash
命令帮我们保存当前副本
现在就要修改bug了,且是要在master
分支修改,但在此之前,我们必须将dev
分支保存起来
git stash
之后可以切换到master分支
要修改bug,我们先创建一个专门用于修改bug的分支
git switch -c bugfix
这里就有问题了,为什么不直接在master
分支修改呢,这就是一个关乎谁更安全更好的问题,当然可以直接在master
操作,但是git提供的分支合并策略,可以更好地完成这个任务,万一在master分支修改bug操作失误,提交了某文件,这就得动用大刀子删除,这样很可能产生无法挽回的损失,而在bugfix
分支上修改bug就算失误,但master还完好,就还有回头路。。。。
于是在bugfix
分支,修改bug,并提交后,这里会产生一个commit id
后续要用。然后可以返回master
,并且合并bugfix
到master
git switch master
git merge bugfix
这里不要急着删除这个bug分支,因为,dev
分支还存在着同样的bug(哭,git有一个方便的指令,可以直接将同样的分支合并操作,应用到另一个分支,就是git cherry-pick commitid
commit id
就是bugfix
分支所提交的修改的号码,这样,master,dev分支的bug都改完了,bugfix
就可以删除了。
最后就是恢复dev
分支的内容
git stash pop
这个操作可以恢复内容的同时,将原来存储的副本删除
至此,bug修复完毕,可以继续苦逼地干活了~
标签:git,管理,bugfix,master,commit,bug,分支 From: https://www.cnblogs.com/HugoWang010220/p/17047848.html