如前所述,传递--no-commit
标志,但是为了避免快速提交,也传递--no-ff
,如下所示:
$ git merge --no-commit --no-ff $BRANCH
要检查分阶段的更改:
$ git diff --cached
即使是快速合并,您也可以撤消合并:
$ git merge --abort
我只需要实现一种方法,该方法可以自动查找存储库与其远程数据库之间的冲突。该解决方案在内存中进行合并,因此不会触及索引或工作树。我认为这是解决此问题的最安全的方法。运作方式如下:
git fetch origin master
git merge-base FETCH_HEAD master
git merge-tree mergebase master FETCH_HEAD
( mergebase是上一步骤中 merge-base 打印的十六进制 ID)现在,假设您想将远程主服务器与本地主服务器合并,但是可以使用任何分支。 git merge-tree
将在内存中执行合并并将结果打印到标准输出。模式的<<
或>>
Grep。或者,您可以将输出打印到文件中并进行检查。如果您发现以 “两个都更改” 开头的行,则很可能会发生冲突。
我假设您只是想在实际尝试合并之前先弄清楚自己会遇到多少麻烦... 并且在合并失败后重置为最后一次提交是相对容易的,因此如果这样的话我不会感到惊讶是预期的方法。
就是说,如果您真的不想触摸工作树中的现有文件,则可以创建一个补丁并将其针对目标分支进行测试。这还具有显示确切地对哪些文件进行了更改的好处 - 只需在文本编辑器中打开补丁文件即可。
git checkout -b mycrazybranch
[change some stuff...]
git add .
git commit -m "changed some stuff"
git format-patch master --stdout > crazy.patch
git checkout master
git apply crazy.patch --check
[all good! cleanup...]
rm crazy.patch
如您所见,这将创建一个补丁文件,然后可以使用 --check 对其进行测试,看是否有任何错误,然后删除该补丁文件。