回答

收藏

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

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

我想解决我的问题Git仓库中的合并冲突。
! M7 q# t! F4 l, D7 _* A9 f- Q/ K2 m我怎样才能做到这一点?
) e. t4 \- M$ y8 B$ r4 S                                                               
8 q; l. s7 y& \    解决方案:                                                               
, F9 G2 E# M4 B0 p) m  f6 _7 X                                                                尝试: git mergetool0 ~9 D5 ^/ n5 p
它会打开一个 GUI,引导你解决每一个冲突,你可以选择如何合并。有时它需要手动编辑,但通常它本身就足够了。这肯定比手工完成整件事要好得多。
7 r# E7 Q- q7 @* V3 ^命令% H5 U0 D- Y9 `4 O- _! d& r
除非你安装 GUI,否则不一定会打开 GUI。git mergetool为我跑vimdiff使用它。您可以安装以下工具之一:meld,opendiff,kdiff3,tkdiff,xxdiff,tortoisemerge,gvimdiff,diffuse,ecmerge,p4merge,araxis,vimdiff,emerge.2 R& A1 M9 v! _6 {% O8 s9 z
下面是vimdiff用于解决合并冲突的示例过程。基于此链接3 @# e( ?! p; U4 c
第 1 步:以下命令在终端中运行
8 p5 t0 d1 [( ygit config merge.tool vimdiffgit config merge.conflictstyle diff3git config mergetool.prompt false这会将 vimdiff 设置为默认合并工具。, o: Z8 @& p& t3 P) {
第 2 步:以下命令在终端中运行
  m7 y7 D' j9 `  q' v) fgit mergetool第 3 步:您将看到以下格式  vimdiff 显示
8 g! y" C# T/ W1 |" v+ T' ?5 U        ╔═══════╦══════╦════════╗  ║       ║      ║        ║  ║ LOCAL ║ BASE ║ REMOTE ║  ║       ║      ║        ║  ╠═══════╩══════╩════════╣  ║                       ║  ║        MERGED         ║  ║                       ║  ╚═══════════════════════╝4 视图为1 p. r! N  j/ ~2 U1 p
LOCAL – 这是当前分支的文件
$ [! r/ G* n3 dBASE – 共同祖先,文件在两次变更前的外观* ^8 ^- B& R" n& o3 D8 f+ ^
远程 - 你想将文件合并到分支中% @! [1 a/ `1 S1 V+ X- k6 Z, f
MERGED – 合并结果保存在 repo 中的内容
1 p. g5 G  a# U您可以使用ctrl导航在这些视图之间w。您可以使用ctrl w后跟j., U3 u5 L0 z; i) v, ?/ P
第 4 步。您可以通过以下方式编辑 MERGED 视图) e2 ], ?" C8 v& @( ]
假如你想去 REMOTE 获取更改
  N# S$ N( v3 G( r' G! R:diffg RE假如你想去 BASE 获取更改" F. d$ W  w( F- {$ o3 b/ l
:diffg BA假如你想去 LOCAL 获取更改0 @  C0 N- u4 v( S4 F
:diffg LO第 5 步。保存、退出、提交和清理
! d) m$ Z- u/ _/ c8 u, H/ Q:wqa 保存并退出 vi% v( Z$ ^# W" E: K2 B# P) f3 R2 d
git commit -m "message"git clean 删除由 diff 工具创建的额外文件(如 *.orig)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则