我正在合并一个可能有很多冲突的远程分支机构。我怎么知道它是否会有冲突?
我没看到任何类似于,git合并的预演。
我正在合并一个可能有很多冲突的远程分支机构。我怎么知道它是否会有冲突?
我没看到任何类似于,git合并的预演。
当前回答
我的简单粗暴解决方案是:
创建一个“pre-master”分支(当然来自master) 将所有你想要的东西合并到这个预master中。 然后你可以看到合并是如何发生的,而不触及主。 将pre-master合并为master OR 将所有想要发布的分支合并到master中
不管怎样,我会听从@orange80的建议。
其他回答
我做了一个别名来做这件事,就像一个魅力,我这样做:
git config --global alias.mergetest '!f(){ git merge --no-commit --no-ff "$1"; git merge --abort; echo "Merge aborted"; };f '
现在我只需调用
git mergetest <branchname>
看看是否有任何冲突。
如前所述,传入——no-commit标志,但为了避免快进提交,也传入——no-ff,如下所示:
$ git merge --no-commit --no-ff $BRANCH
检查阶段性的变化:
$ git diff --cached
你可以撤销合并,即使是快进合并:
$ git merge --abort
你可以在看到冲突后执行git merge -abort。
Git在合并时引入了——ff-only选项。
来自:http://git-scm.com/docs/git-merge ——ff-only 拒绝合并并以非零状态退出,除非当前HEAD已经是最新的,或者合并可以作为快进解决。
这样做将尝试合并和快进,如果不能,它将中止并提示您不能执行快进,但不影响您的工作分支。如果它可以快进,那么它将在工作分支上执行合并。此选项也可用于git拉取。因此,你可以这样做:
git pull --ff-only origin branchA #See if you can pull down and merge branchA
git merge --ff-only branchA branchB #See if you can merge branchA into branchB
我只想看到冲突(不能看到他们与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}。
我希望这对大家有所帮助。