我正在合并一个可能有很多冲突的远程分支机构。我怎么知道它是否会有冲突?
我没看到任何类似于,git合并的预演。
我正在合并一个可能有很多冲突的远程分支机构。我怎么知道它是否会有冲突?
我没看到任何类似于,git合并的预演。
当前回答
我的简单粗暴解决方案是:
创建一个“pre-master”分支(当然来自master) 将所有你想要的东西合并到这个预master中。 然后你可以看到合并是如何发生的,而不触及主。 将pre-master合并为master OR 将所有想要发布的分支合并到master中
不管怎样,我会听从@orange80的建议。
其他回答
我只需要实现一个自动查找存储库与其远程存储库之间冲突的方法。这个解决方案在内存中进行合并,所以它不会影响索引,也不会影响工作树。我认为这是解决这个问题最安全的方法。下面是它的工作原理:
将远程获取到存储库。例如: Git获取源主机 执行命令git merge-base: git merge-base FETCH_HEAD master 运行git merge-tree: git merge-tree mergebase master FETCH_HEAD (mergebase为上一步打印的merge-base十六进制id)
现在假设您想要合并远程主服务器和本地主服务器,但是您可以使用任何分支。Git合并树将在内存中执行合并,并将结果打印到标准输出。Grep模式<<或>>。或者您可以将输出打印到一个文件中并进行检查。如果你发现一行以“changed in both”开头,那么很可能会有冲突。
你可以在看到冲突后执行git merge -abort。
不完全是那样的。但是您可以使用——no-commit选项,这样它就不会在合并后自动提交结果。通过这种方式,您可以检查合并,如果需要的话,还可以在不破坏提交树的情况下撤消合并。
我做了一个别名来做这件事,就像一个魅力,我这样做:
git config --global alias.mergetest '!f(){ git merge --no-commit --no-ff "$1"; git merge --abort; echo "Merge aborted"; };f '
现在我只需调用
git mergetest <branchname>
看看是否有任何冲突。
我知道这在理论上是跑题的,但对于从谷歌搜索到这里的人来说,实际上是非常切题的。
当有疑问时,你可以使用Github界面创建一个pull-request,并检查它是否表明干净的合并是可能的。