在工作中一般代码管理工具几乎都是使用的git,有的同学喜欢敲命令,有的同学可能使用idea的git解决方案,对于我来说其实更喜欢图形化的操作界面,使用起来更加直观方便。所以sourcetree是我经常使用的,本文介绍一下使用sourcetree解决提交的git文件冲突的案例。
一、前置条件
这里需要准备的工具有:
1、sourcetree(下载地址:https://www.sourcetreeapp.com/) 2、git服务端(略过) 3、beyond compare文件比较工具(下载地址:https://www.scootersoftware.com/download.php)
备注:
1、下载完beyond compare工具之后记得把他安装一下。
2、安装完beyond compare工具之后,记得把他配置到sourcetree里面去,如下图:
二、模拟git文件冲突
首先模拟下git文件出现冲突的情况,在git上准备一个项目:
这个项目里面我们准备一个名称为test.txt的文件,然后在里面添加一些内容
接下来我们把这个项目使用sourcetree给拷贝到本地来
此时git服务器的版本和本地的版本是一致的,既然要模拟冲突,接下来的步骤如下:
1、把服务器端test.txt文件给修改一下:
这里我们在服务器端的git版本里面,test.txt文件添加了abc字符。
2、修改本地的test.txt:
这里我们在本地的git版本里面,test.txt文件中添加了efg字符。
3、在本地使用sourcetree进行提交:
选择暂存,然后进行提交即可。
可以看到上图,我们在本地提交出现了错误,提示:
hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. 完成时带有错误,见上文。
这就说明我们提交的文件与服务器上的文件有冲突,也就是其他人也更改过相同的文件,并且提前进行了提交。当我们关闭上面的提交窗口的时候还会出现一个弹窗提示:
您的此次提交成功但推送失败,要重新进行您的推送,请使用工具栏上的“推送”按钮
以上我们模拟git提交冲突的场景就准备好了。
三、解决git提交冲突
接下来我们就要开始解决冲突了。
1、拉取最新的代码
既然出现了冲突,那么说明本地的git版本不是最新的,所以需要点击sourcetree工具栏的拉取按钮,把服务器端最新的代码拉取到本地来:
点击这个拉取的时候,我们需要进行选择:
备注:
1、这里一定要把立即提交合并的改动给勾上 2、这里一定要把用变基代替合并给勾上
然后点击拉取即可。点击拉取之后,会出现一个弹窗提示:
你现在在你的工作副本中遇到了一些需要在继续工作之前解决的合并冲突。你可以选择冲突的文件然后使用“解决冲突”菜单中的选项来解决冲突
这里直接给他关闭了即可,关闭后,可以看到未暂存文件的区域有出现冲突的所有文件,他们的前面是一个感叹号。
这里咱们点击test.txt文件,鼠标右键选择:解决冲突->打开外部合并工具,就会弹出咱们刚才设置的beyond compare工具界面。并且界面上会弹出一个可视化合并进行中的弹窗。
打开的beyond compare工具界面如下图:
对于上图有4个区域,分别如下图:
咱们把内容填充一下,全部放到合并后的文件区域里面即可,如上图。配置好之后,直接关闭屌当前beyond compare工具界面,他会直接提示保存,咱们点击yes即可
此时就会回到sourcertree的界面上,并且合并进行中的弹窗也会直接消失。在未暂存文件的区域里面多了几个类似
backup base local remote
这样的文件,咱们不管他,只需要继续点击刚才修改的文件,进行暂存
暂存之后,当前的文件就正常了。界面拉取和推送上的数字也没了,同事backup,base,local,remote这些文件也消失掉了。
然后这里为了确保完全顺利,再次点击下拉取按钮
他会提示变基进行中的弹窗
这里直接选择继续变基即可,然后出现拉取界面,点击确定即可
点击完成之后,看到界面只有一个推送按钮有数字了,咱们直接点击推送即可
可以看到咱们的推送就完成了
最后咱们去git服务器端校验一下结果,刷新一下test.txt文件
可以看到冲突解决了,git文件也合并完成了。
以上就是在sourcetree中解决提交的git文件冲突的案例。
备注:
1、这里也可以不安装beyond compare5工具,如果不安装的话,当冲突文件出现感叹号标识的时候,双击当前文件,他会使用文本打开,直接编辑也可以。如下图:
把这一块给解决下即可。剩余步骤操作都是一样的。
还没有评论,来说两句吧...