回答

收藏

如何解决 Git 存储库中的合并冲突?

技术问答 技术问答 268 人阅读 | 0 人回复 | 2023-09-12

我想解决我的问题Git仓库中的合并冲突。
- g% Y. z: m+ J我怎样才能做到这一点?. Q; z- P; e& E! y8 w, o5 j
                                                                : Q. H& |& G3 e4 n
    解决方案:                                                                / d" |; Y& D, F( z! s
                                                                尝试: git mergetool8 j" j/ M" g6 _! }( ?
它会打开一个 GUI,引导你解决每一个冲突,你可以选择如何合并。有时它需要手动编辑,但通常它本身就足够了。这肯定比手工完成整件事要好得多。: Z: A* w0 M8 n
命令
$ v2 g! ]7 O  [( v" ^2 ?* ?( v除非你安装 GUI,否则不一定会打开 GUI。git mergetool为我跑vimdiff使用它。您可以安装以下工具之一:meld,opendiff,kdiff3,tkdiff,xxdiff,tortoisemerge,gvimdiff,diffuse,ecmerge,p4merge,araxis,vimdiff,emerge.( {! A4 Y& X. x0 x
下面是vimdiff用于解决合并冲突的示例过程。基于此链接8 v/ m, H5 `7 G
第 1 步:以下命令在终端中运行
3 A$ g2 d/ ?5 C( Ygit config merge.tool vimdiffgit config merge.conflictstyle diff3git config mergetool.prompt false这会将 vimdiff 设置为默认合并工具。
, h$ C8 k2 R8 u- `第 2 步:以下命令在终端中运行
. r) X  F1 H3 R! M: i2 n: z+ rgit mergetool第 3 步:您将看到以下格式  vimdiff 显示
0 T* U) h8 h: g1 s2 T        ╔═══════╦══════╦════════╗  ║       ║      ║        ║  ║ LOCAL ║ BASE ║ REMOTE ║  ║       ║      ║        ║  ╠═══════╩══════╩════════╣  ║                       ║  ║        MERGED         ║  ║                       ║  ╚═══════════════════════╝4 视图为. W* N9 F* q" @1 I2 x, ?
LOCAL – 这是当前分支的文件( j3 s, _- s  b; @' Q9 Z. A! p: {
BASE – 共同祖先,文件在两次变更前的外观5 `& y8 A4 {: a/ Y+ P: r
远程 - 你想将文件合并到分支中
5 a* p, \' m+ ~9 LMERGED – 合并结果保存在 repo 中的内容
: v5 V/ ~/ X; ^8 g您可以使用ctrl导航在这些视图之间w。您可以使用ctrl w后跟j.
! v: x; Q5 h* T# d4 ~% {2 a第 4 步。您可以通过以下方式编辑 MERGED 视图
" @& A9 e7 \( F7 S$ @8 R6 m$ w假如你想去 REMOTE 获取更改  D  d4 y5 I% S8 f6 u8 Z
:diffg RE假如你想去 BASE 获取更改
. v+ P9 W2 \# G:diffg BA假如你想去 LOCAL 获取更改1 `5 N8 H+ ]9 j* ]. F8 N6 S6 f1 r' l
:diffg LO第 5 步。保存、退出、提交和清理
* O9 D' E- B2 `0 c4 Z/ p9 z:wqa 保存并退出 vi
5 y) I+ q" k+ f( u6 Y2 kgit commit -m "message"git clean 删除由 diff 工具创建的额外文件(如 *.orig)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则