目录
冲突
合并冲突
为了测试冲突,我们先在master上创建提交一个简单的内容,注释了的111:
接下来我们切去test分支,在同样的位置,提交一个注释的222
然后我们切换到master分支,进行将test合并到master的操作,会提示你冲突了:
我们可以看到两个不同版本的状态,冲突内容:
选择你要保留的,如果是我的版本那就是保留//111,如果是他人版本就是保留//222。
但是这里我们合并test,test只修改了这个内容,如果我们选择我的版本进行合并,虽然进行了合并操作,这次的合并操作便没了什么意义,我们的master分支内容什么都没变。
不过实际项目中我们不会出现这种情况,肯定是视需求而决定需要保留什么内容,比如test除了这个与我们冲突的注释,还新增了其他功能,我们虽然没有采纳这个注释的修改,但是我们合并了新增的功能。
被合并的test分支不会受到合并操作的任何影响,内容不会发生改变,我们的合并操作只是为了让master分支能够得到test上更新的代码。
未拉取便提交冲突
一般多人开发时会遇到的状况。
如果代码没有冲突,你们修改的不是同一个页面的代码,那拉取与提交的先后是不影响代码内容的。
比如别人制作了一个新页面,你没有拉取下来,你修改了原来页面的内容,直接提交。
报错了
出现这种推送不上去的状态。
这时候不用急,你只要确保不要让自己的错误提交到远程就好
记住,工作中,宁愿自己修改的代码丢失,也千万别覆盖别人修改的代码
其实很简单,我们切回到我们提交前的即可。
接下来先拉取再提交即可。
如果我们先拉取再提交时,先拉取就报错了,一般就是最后一个错误:拉取代码与本地修改代码有冲突,见下一节。
拉取代码与本地修改代码有冲突
比如别人将注释修改为333,而你本地修改代码时,注释修改成了777。
现在你想提交,先拉取再提交。
拉取时就报错了,死活拉不下来,多少遍也不行。
这时候我们就先提交再拉取。
然后就会告诉你冲突在哪里了,我们就选择保留哪个了,见上文合并冲突解决方法,解决完冲突再提交即可。
撤销合并操作
假如自己合并了不想合并的内容,想撤销掉一次合并操作,如何进行呢?
上图dev合并到了master上面,这时候我们选择合并前master的那一次提交,选择重置分支到此次提交。
打开强制推送。
不去管提交和拉取,直接选择推送。
把改变内容全部移除和丢弃。
然后就发现合并操作消失了。
尾言
看完这些,使用sourcetree可以解决你日常95%的git版本控制问题啦,觉得有用的话点个赞吧~