gpt4 book ai didi

git - 如何解决 Git 存储库中的 merge 冲突?

转载 作者:太空狗 更新时间:2023-10-29 14:24:23 25 4
gpt4 key购买 nike

如何解决我的 Git 存储库中的 merge 冲突?

最佳答案

尝试:

git mergetool

它会打开一个 GUI,引导您解决每个冲突,然后您可以选择如何 merge 。有时需要事后进行一些手工编辑,但通常它本身就足够了。这肯定比手工完成整个事情要好得多。


根据 Josh Glover's comment :

[This command]doesn't necessarily open a GUI unless you install one. Running git mergetool for me resulted in vimdiff being used. You can installone of the following tools to use it instead: meld, opendiff,kdiff3, tkdiff, xxdiff, tortoisemerge, gvimdiff, diffuse,ecmerge, p4merge, araxis, vimdiff, emerge.


下面是一个基于 this link 使用 vimdiff 解决 merge 冲突的示例过程。

  1. 在您的终端中运行以下命令

    git config merge.tool vimdiff
    git config merge.conflictstyle diff3
    git config mergetool.prompt false

    这会将 vimdiff 设置为默认的 merge 工具。

  2. 在您的终端中运行以下命令

    git mergetool
  3. 您将看到以下格式的 vimdiff 显示:

      ╔═══════╦══════╦════════╗
    ║ ║ ║ ║
    ║ LOCAL ║ BASE ║ REMOTE ║
    ║ ║ ║ ║
    ╠═══════╩══════╩════════╣
    ║ ║
    ║ MERGED ║
    ║ ║
    ╚═══════════════════════╝

    这4个 View 是

    • LOCAL:这是来自当前分支的文件
    • BASE:共同的祖先,这个文件在两次更改之前的样子
    • REMOTE:您要 merge 到分支中的文件
    • MERGED: merge 结果;这是保存在 merge 提交中并在将来使用的内容

    您可以使用 ctrl+w 在这些 View 之间导航。您可以使用 ctrl+w 后跟 j 直接访问 MERGED View 。

    关于 vimdiff 导航的更多信息是 herehere

  4. 您可以像这样编辑 MERGED View :

    • 如果你想从远程获取更改

      :diffg RE
    • 如果你想从 BASE 获取更改

      :diffg BA
    • 如果你想从本地获取更改

      :diffg LO
  5. 保存、退出、提交和清理

    :wqa 保存退出vi

    git commit -m "消息"

    git clean 删除多余的文件(例如 *.orig)。 警告:如果您不传递任何参数,它将删除所有未跟踪的文件。

关于git - 如何解决 Git 存储库中的 merge 冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12235126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com