【问题标题】:Equivalent of a git pre-merge hook?相当于一个 git pre-merge 钩子?
【发布时间】:2015-12-21 00:46:43
【问题描述】:

我从事一个项目,其中多个开发人员必须使用单个项目文件编辑代码。他们编辑的大部分代码实际上位于单独的代码模块文件中,但他们必须在彼此之间共享单个项目文件。

IDE 写入项目文件的内容有两种:

  1. 重要的东西:即构成项目的模块文件列表
  2. 多余的东西:即IDE对话框X、Y位置设置

因为 IDE 没有将多余的内容拆分到每个用户的设置文件中的概念,所以我们总是会遇到合并冲突

问题: git 是否提供了一个扩展点(挂钩),允许我在用户合并某个文件类型时忽略多余的东西?我的目标是默认为 多余的东西 采用“他们的/我的”类型的合并策略,同时像往常一样处理 重要的东西 的合并。 p>

【问题讨论】:

  • Git 2.24(2019 年第四季度)确实包含一个 pre-merge-commit 挂钩,这可能会有所帮助。

标签: git githooks


【解决方案1】:

你可以在合并时使用,策略

git merge --strategy-option theirs # or ours

为什么你需要一个钩子呢?如果您只想对某些目录或文件执行此操作,则在合并时可以使用 -

git checkout --theirs path/to/the/conflicted_file.php

据我所知,git 没有提供 pre-merge 钩子。如果你使用 rebase 而不是 merge,那么你可以使用 pre-rebase 钩子。您可以尝试使用prepare-commit-msg 挂钩。如果提交是合并或存在 .git/MERGE_MSG 文件,则第二个参数将是合并。

prepare-commit-msg documentation

【讨论】:

  • 我不确定这是否是我想要的。使用您的方法,我相信会发生的情况是它会自动接受所有 Superflous Stuff 作为 theirs (good) ,但即使确实存在合并冲突,它也会采用他们对重要东西 (bad) 的更改版本这需要解决。我的目标是使用theirs 自动合并多余的东西而不是重要的东西。你知道我的意思吗?
  • 如何识别多余的东西?
  • 我的意思是“多余的东西”是什么意思。你认为 git 会如何区分?
  • 嗯,就是这样,我不希望 git 能够区分,这就是为什么我想知道是否有一个我可以利用的扩展点,以便我可以做出决定它
  • 我改了答案,看看有没有帮助
猜你喜欢
  • 1970-01-01
  • 2021-08-07
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
相关资源
最近更新 更多