|
我想解决我的问题Git仓库中的合并冲突。
, D: i( b& @7 t. F5 ]' o" y我怎样才能做到这一点?
* X" U \6 v8 F, D; ]+ E& B/ T
* U. }7 C4 R; Y4 l5 Y 解决方案: - R u0 `/ @0 H
尝试: git mergetool
/ `3 }5 P0 C0 H+ Y6 b- B* u7 k- y它会打开一个 GUI,引导你解决每一个冲突,你可以选择如何合并。有时它需要手动编辑,但通常它本身就足够了。这肯定比手工完成整件事要好得多。, p! ]) F9 z4 V
命令
- ?9 l# b7 y1 @5 l' m6 }除非你安装 GUI,否则不一定会打开 GUI。git mergetool为我跑vimdiff使用它。您可以安装以下工具之一:meld,opendiff,kdiff3,tkdiff,xxdiff,tortoisemerge,gvimdiff,diffuse,ecmerge,p4merge,araxis,vimdiff,emerge.$ m/ b/ ^, M$ J. Y' R
下面是vimdiff用于解决合并冲突的示例过程。基于此链接% Z' u+ x: m" Y) z. [$ F
第 1 步:以下命令在终端中运行/ E* {$ w, ~, _$ F8 f; t
git config merge.tool vimdiffgit config merge.conflictstyle diff3git config mergetool.prompt false这会将 vimdiff 设置为默认合并工具。+ ~* P6 l; B/ X; j
第 2 步:以下命令在终端中运行
& a' F& x r n6 c8 t' x' t3 jgit mergetool第 3 步:您将看到以下格式 vimdiff 显示
& G+ u9 d/ j, p' @4 L, Z, c ╔═══════╦══════╦════════╗ ║ ║ ║ ║ ║ LOCAL ║ BASE ║ REMOTE ║ ║ ║ ║ ║ ╠═══════╩══════╩════════╣ ║ ║ ║ MERGED ║ ║ ║ ╚═══════════════════════╝4 视图为
& e" L `! W: VLOCAL – 这是当前分支的文件3 b8 [5 |+ Z$ A4 T
BASE – 共同祖先,文件在两次变更前的外观
- e% o! [! |+ n: I n远程 - 你想将文件合并到分支中1 u+ u! U, n [! I
MERGED – 合并结果保存在 repo 中的内容
* I$ N$ v' u' l- @- k4 W$ L6 i您可以使用ctrl导航在这些视图之间w。您可以使用ctrl w后跟j./ w) D g6 [5 E+ z; q
第 4 步。您可以通过以下方式编辑 MERGED 视图5 U' h% p/ T$ i2 ]( V/ m8 Q
假如你想去 REMOTE 获取更改
/ j4 B" L- H8 T/ P$ d:diffg RE假如你想去 BASE 获取更改
: C) f" e2 w9 V- F- b:diffg BA假如你想去 LOCAL 获取更改1 ]; J& ]" Y$ s/ ]- U, i
:diffg LO第 5 步。保存、退出、提交和清理
0 B7 z: Q/ S9 O# ]- _4 b2 Q:wqa 保存并退出 vi# @8 g) f8 X; K* i
git commit -m "message"git clean 删除由 diff 工具创建的额外文件(如 *.orig)。 |
|