MetricSubs

一个主攻科技/音乐的字幕组

冲突的解决

本文接着http://metricsubs.com/2019/01/14/use-smartgit/,讲怎么解决冲突。

《冲突的解决》
分叉

在如图的4个commit中,Changed Dialogue和Changed first line修改的是同一个文件,产生了冲突。而created articles.txt和added logos分别新建了一些文件,不产生冲突。

此时点击pull并选择Rebasing,则Added logos会直接被处理。之后SmartGit进入Rebasing 模式。

Rebase的意思是变基:本来,Changed first line to comment是基于Added ignore of Thumbs.db的。现在,要把它变到基于Added logos上,这样两个分支就能被拉直。

Journal的显示如图:

《冲突的解决》

绿色的箭头就代表着正在进行中。双击Added logos,看到如此的Log:

《冲突的解决》
显示为红色的分支则是rebasing中的分支。Git库后也跟着<rebasing>

此时,文件浏览器显示冲突的文件,并显示Conflicted。下面的对比栏左侧显示服务器的文件,右侧的文件上则有着特殊标记:<<<<<< HEAD,和<<<<< <commit message>

《冲突的解决》

此时在文件浏览器中双击产生矛盾的文件,打开Conflict Solver

《冲突的解决》
Conflict Solver

这样会打开三个文件:服务器的文件,本地的文件,和rebase后所想要的结果。一般情况下。顶部有一系列按键。从”Left+Merge”到”Merge Below”的四个按键是用来调整几个窗口的位置的。在如图视图中,左右的文件都是只读的,而中间的Working Tree可以编辑。”Take Left”,”Take Right”等按键则是用来选择一块代码使用哪一个文件:左、右、先左后右、先右后左。在这个情况中,这几个按键无法满足需求(因为我们需要五行全变成comment,而它们是连成一块的,按键只能整块改变),因此手动编辑中间的文件内容。

《冲突的解决》

Conflict Solver提供了很快捷的复制方式。复制完后都显示如图,点击Save,再点击Stage即可。

《冲突的解决》

文件的状态变成了Staged。此时再点击Continue,即可完成Rebase(不用创建commit)。至此Pull完成,状态变为本地领先远程服务器2个commit。此时再push,即可使本地与服务器同步。如果冲突的文件有多个,则需要分别手动解决。

点赞

发表评论