【问题标题】:Git hook for merge conflicts用于合并冲突的 Git 钩子
【发布时间】:2012-03-27 18:45:15
【问题描述】:

有没有可以用于合并冲突的 git 钩子?在git merge 失败后,如果能够编写一个脚本来打开$EDITOR 中所有有冲突的文件,那就太好了。不幸的是,如果存在冲突,post-merge 钩子不会运行,并且从我在 githooks 手册页中看到的内容来看,没有其他适用的钩子。

我想知道我是否遗漏了一些东西,或者是否还有其他替代方法可以将“git merge”别名为函数或类似的东西。

谢谢, 克里斯

【问题讨论】:

  • 你可以使用一个自定义的合并工具,它只是一个编辑器,而不是真正的三向合并工具,当你遇到冲突时运行git mergetool
  • 好建议。我没有考虑这一点,因为我真的不喜欢任何合并工具,并且发现直接在编辑器中修复我的冲突更好。我发现this 是一种可能的解决方案,我认为自定义mergetool 绝对是可行的方法。现在的问题是,如何处理我的问题?我应该点击页面底部的“回答您的问题”,还是什么都不做?
  • 问题没有直接回答。澄清可能会有所帮助。 git 支持挂钩的事件中,包括(基于默认的.git/hook/*.sample 文件):1.post-checkout2.post-commit3.post-merge4.post-receive5.post-update6.pre-applypatch7 . pre-commit 8. pre-push 9. pre-rebase ... 在合并冲突期间是否适用一个或多个?由于git在合并冲突期间强制root所有权和有限的权限,普通用户无法解决合并冲突。合并冲突挂钩将允许设置可用的所有权、权限。
  • 我从来没有以 root 身份运行 git,如果你说的是真的,应该会遇到权限问题。

标签: git hook githooks


【解决方案1】:

我认为可能有两种方法,正如您提到的那样,您可以编辑您的合并工具,或者您可以使用以下方法创建另一个别名:

for i in $(git ls-files -u | cut -f 2 | sort -u); do $EDITOR $i; done

【讨论】:

    【解决方案2】:

    正如 Charles Bailey 所建议的,最好的方法是自定义合并工具。使用this guide,我想出了一个在我的编辑器中打开合并冲突的简单方法:

    [merge]
      tool = emacs
    [mergetool "emacs"]
      cmd = $editor \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
    

    由于 Charles Bailey 从来没有回答我应该如何赞扬他,我希望这是最终结束这个问题的适当方式。

    【讨论】:

      猜你喜欢
      • 2017-07-24
      • 1970-01-01
      • 2015-10-15
      • 2014-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      相关资源
      最近更新 更多