我平时项目管理用的是git,使用的工具是Sourcetree。写这篇文章的目的就是要记录一些平时开发过程中遇到的比较麻烦的问题。
对于一般的push,pull,合并等内容就不进行记述了,估计哪都能找到。接下来就记录几个问题(会不断更新)。
实例
1.如何去除某个分支中的某个提交?
使用回滚。对于需去除的commit提交。右击弹出弹窗,点击提交回滚,如果有冲突,即先解决冲突。没有冲突则直接提交推送。
2.如何去除某个分支中的某些提交?(如develop分支回退到之前的某个节点)
使用重置到XXXX提交的功能。在要重置的节点右击选择将xxx重置到这次提交的选项。如图
点击确定
这时会发现你有x个提交可以拉取,这时候如果拉取就会恢复到之前的样子。
我们是要回退这些提交到之前的节点,所以需选择推送,强制推送即可。
3.如何删除某个分支合并的代码?
情景:如你的develop分支合并了feature/xxxx分支,但是这个功能突然又被产品告知不要在这个版本上了,如何删除feature/xxxx分支合并进来的代码呢?
如果,这个分支合并之后的代码你都不需要了,都要丢弃,那么方法如2一样,直接回退到xxxx节点。如果这个合并之后的代码还有部分需要,可参考问题五的解决思路。
4.如何选择某个分支的部分代码进行合并提交?
情景:做需求的时候,你的功能分支中部分功能可能被产品临时告知要废弃,那么如何处理?
可使用 git 的 cherry-pick 命令 如
git cherry-pick 4db0729d
把那些要提交的节点选出来提交。
对于sourcetree 即是遴选功能。选择要被提交过来的节点,右击,选择遴选选项。
5.如何删除某个分支中的部分代码(如develop分支上有a,b,c,d,e五个提交,需要删除c,d两次提交)?
情景:比如你把某个功能已经合并到了你的开发分支,同时之后还提交了一些代码。但是这个功能突然被告知要下架,这时候如何处理?
首先到达节点a,从该处拉出一个新分支如copy_develop,然后选择遴选b,e。在回到原来的develop分支,重置到a这次的提交。然后再把copy_develop分支的代码合并到develop分支即可。