我正在合并一个可能有很多冲突的远程分支机构。我怎么知道它是否会有冲突?
我没看到任何类似于,git合并的预演。
我正在合并一个可能有很多冲突的远程分支机构。我怎么知道它是否会有冲突?
我没看到任何类似于,git合并的预演。
当前回答
我的解决方案是向后归并。
不要将您的分支合并到远程“目标”分支中,而是将该分支合并到您的分支中。
git checkout my-branch
git merge origin/target-branch
你将看到是否有任何冲突,并可以计划如何解决它们。
在这之后,你可以通过git merge—abort终止合并,或者(如果没有任何冲突并且合并已经发生)通过git reset—hard HEAD~1回滚到之前的提交
其他回答
我的解决方案是向后归并。
不要将您的分支合并到远程“目标”分支中,而是将该分支合并到您的分支中。
git checkout my-branch
git merge origin/target-branch
你将看到是否有任何冲突,并可以计划如何解决它们。
在这之后,你可以通过git merge—abort终止合并,或者(如果没有任何冲突并且合并已经发生)通过git reset—hard HEAD~1回滚到之前的提交
我只想看到冲突(不能看到他们与diff3在GitHub,还)。充分利用上面的答案,我想到了这个:
git merge --no-commit --no-ff @{upstream}
git grep -l '<<<<<<< HEAD' | xargs -I % sh -c "echo -e '\n\e[93m%\n---\e[0m' && cat %"
git merge --abort
对我来说,这是用来检查我的pr的。你可以用任何分支替换@{upstream}。
我希望这对大家有所帮助。
我使用request-pull git命令来做到这一点。它允许您查看合并时可能发生的每个更改,但无需对本地或远程存储库进行任何操作。
例如,假设您想将一个名为“feature-x”的分支合并到您的主分支中
git request-pull master origin feature-x
将向您展示将发生什么(不做任何事情)的摘要:
The following changes since commit fc01dde318:
Layout updates (2015-06-25 11:00:47 +0200)
are available in the git repository at:
http://fakeurl.com/myrepo.git/ feature-x
for you to fetch changes up to 841d3b41ad:
----------------------------------------------------------------
john (2):
Adding some layout
Refactoring
ioserver.js | 8 +++---
package.json | 7 +++++-
server.js | 4 +--
layout/ldkdsd.js | 277 +++++++++++++++++++++++++++++++++++++
4 files changed, 289 insertions(+), 7 deletions(-)
create mode 100644 layout/ldkdsd.js
如果您添加-pparameter,您还将获得完整的补丁文本,就像您对每个更改的文件执行git diff一样。
用git撤销合并是如此简单,你甚至不应该担心演练:
$ git pull $REMOTE $BRANCH
# uh oh, that wasn't right
$ git reset --hard ORIG_HEAD
# all is right with the world
编辑:正如下面的评论中所指出的,如果你在你的工作目录或暂存区域中有更改,你可能想要在执行上述操作之前隐藏它们(否则它们将在上面的git重置后消失)
我知道这在理论上是跑题的,但对于从谷歌搜索到这里的人来说,实际上是非常切题的。
当有疑问时,你可以使用Github界面创建一个pull-request,并检查它是否表明干净的合并是可能的。