Repository navigation
MyGit 0.3.6
三路解决冲突改成和 IntelliJ 一样的体验。
- 不再读 git 写进文件的冲突标记,而是自己从共同祖先(base)、我们的、他们的三份内容算三路合并:结果栏一打开就是 base,只有一边改的地方已经合进去,冲突处显示 base 的原文,没有
<<<<<<</=======/>>>>>>> - 三栏按改动对齐、一起滚动:滚任意一栏,另外两栏跟着滚到对应的行;打开时直接停在第一个冲突
- 改动按 IntelliJ 的配色标出来:冲突红色,修改蓝色,新增绿色,删除灰色(删除的地方画一条线);左右两栏和结果栏之间用色带连起来,已解决的改动变淡
- 每处改动旁边有按钮:» / « 把这边的改动放进结果(另一边已经放进去时接在后面,也就是「两者都要」),✕ 忽略这边的改动;顶部的「采用左侧」「采用右侧」「两者都要」作用于当前冲突
- 新增魔法棒按钮「自动解决简单冲突」(IntelliJ 的魔法棒):两边改的是同一行里不同的单词时(比如一边改了
call(a, b)的a,另一边改了b),把两边的改动都合进结果 - 结果栏可以直接编辑,改动会跟着走;撤销(⌘Z)刚才采用的改动,冲突会重新变回未解决
- F7 / ⇧F7 在未解决的冲突之间跳转;跳过去时三栏把这处改动的第一行对齐在同一高度
- 「整个文件」菜单(全部采用左侧/右侧)收进了工具栏右边的 ⋯,窗口窄时工具栏也放得下
- 文件里的冲突已经在别处手动改过(冲突标记都去掉了,比如在编辑器里改了一半,或者 rerere 已经解决)时,结果栏沿用文件现在的内容,不会被覆盖;不想要的话,⋯ 里有「重新合并(放弃结果里的改动)」
- 保存后自动打开下一个有冲突的文件,和 IntelliJ 一样一个接一个处理
- 一边删除、一边修改的文件不再显示成整个文件冲突,而是说明谁删了、谁改了,可以「保留文件」或「删除文件」,下面显示保留下来的内容;二进制文件冲突直接选一边整个采用
- ⋯ 里可以「忽略空白」:只改了缩进或空格的一边不算改动,未改动的行保留我们的空白(和 git 的
-Xignore-space-change一样),和设置里的「忽略空白」是同一个开关 - ⋯ 里可以「比较 base 与左侧 / 右侧」,看某一边相对共同祖先改了什么,再「返回合并」
- ✕ 忽略之后,⌘Z(Windows / Linux 上 Ctrl+Z)可以撤回;结果栏在那之后改过时,⌘Z 撤销的是结果栏的编辑
- 保存时保留文件原来的换行符(\r\n 的文件以前会被存成 \n);还有冲突没解决时会先问一下