【发布时间】:2014-03-27 08:33:36
【问题描述】:
有没有一种简单的方法可以使用 git 命令检测两个分支之间潜在的合并/变基冲突?例如,一些文件在两个分支中都被修改,或者一些文件从一个分支中删除并在另一个分支中可用。我能想象的是用命令找到两个分支的共同祖先
git merge-base
然后列出从共同祖先到两个分支头部的所有文件更改状态,然后比较状态列表以找出潜在的合并点。这是正确的方法还是存在更聪明的方法?如果是如何实现呢?
非常感谢。
【问题讨论】:
有没有一种简单的方法可以使用 git 命令检测两个分支之间潜在的合并/变基冲突?例如,一些文件在两个分支中都被修改,或者一些文件从一个分支中删除并在另一个分支中可用。我能想象的是用命令找到两个分支的共同祖先
git merge-base
然后列出从共同祖先到两个分支头部的所有文件更改状态,然后比较状态列表以找出潜在的合并点。这是正确的方法还是存在更聪明的方法?如果是如何实现呢?
非常感谢。
【问题讨论】:
关于 SO 有几个与此类似的问题,其中大多数都有已接受的答案,告诉你做一个git merge --no-commit。但是,这仍然会在结帐中执行合并并修改工作树。据我了解,问题是关于检测冲突。
This answer 提供了一种测试冲突的方法。为该答案提供in a comment 的测试的精简形式如下所示:
git merge-tree `git merge-base branch1 branch2` branch1 branch2 \
| grep -A3 "changed in both"
【讨论】: