文章目录
1.在tortoisegit中设置winmerge
在程序所在目录的“空白”位置右键,弹出菜单,依次选择下图位置,在edit中填入:
1. | ![]() |
2. | ![]() |
3. | ![]() |
图3 中填入如下内容
C:\Program Files (x86)\WinMerge\WinMergeU.exe /wl /wr /dl %tname /dm 结果 /dr %yname %theirs %merged %mine
注:默认安装winmerge时的参数为:(本文并不使用)
C:\Program Files (x86)\WinMerge\WinMergeU.exe /e /ub /fr /wl /wm /dl %bname /dm %tname /dr %yname %base %theirs %mine /o %merged /ar
2.发现冲突:
2.1 首先更新‘master’ or ‘main’分支
2.2 将‘当前分支’ 变基到 ‘master’ or ‘main’
特别说明:
1.变基rebas 最好仅应用在“当前分支”领先master/main只有一个提交的情况。如果“当前分支”有好多提交,最好还是使用merge合并,以便保存多个完整的提交记录
2.如果能接受 squash,则最好本地压缩成一个提交(做到领先master分支一个提交),再rebas,这样有冲突时解决冲突比较容易些
选中master/main分支,右键单击,将“当前”分支变基为 “master/main”
2.3 vs中提示冲突
3.变基操作
3.1解决冲突第一个冲突。
a.打开“Resolve”窗口
b.选中文件,点击“Edit conflicts”
c.winmerge 合并界面
1.“master” “结果” “本分支” 界面
master: 为远端拉下来的主分支
结果: 本次合并的结果文件
“本分支”: 当前分支,见本文 2.2
2.不同按钮
点击“不同”按钮,光标将向下跳动,跳到下一个不同位置。
3.冲突按钮
点击“冲突按钮,光标将向下跳动,跳到下一个冲突位置
4.代码复制方向
master 合并到”结果“: 应该先选中左侧”master”代码,再点击“向右复制”,则代码复制到“中间”
当前分支合并到“结果”:应先选中右侧“当前分支”,再点击“向左复制”,则代码复制到“中间”
1.一般情况“结果”中“不同”可以不用理会,winmerge可以自动合并
2."冲突“需要开发人员决定如何取舍,从下面两个方向进行合并
master --> 结果 (参考下图)
结果<—当前分支
d. 点击保存
关闭winmerge后,会提示 | 没有弹出提示时 |
![]() | ![]() |
点击“Resolved”,这部分代码,进入“暂存”区 | 上图:自己手动点击“Resolved” |
3.2 继续解决其他冲突
3.3 回到Vs 点击“继续”,变基完毕。
4.其他:
4.1 中止合并
当合并出现大面积错误,或者想停止合并,可以点击“中止”
4.2 出现其他文件(.bak)
.bak 是使用winmerge时,产生的备份文件。是“结果”文件没有保存之前的内容。(见下图)
解决方法
1.直接删除bak文件 | ![]() |
2.修改winerge bak文件的保存位置 bak保存再其他文件夹 | ![]() ![]() |