在“git merge”中,我希望任何差异,即使通常不是合并冲突,也被视为合并冲突。然后,通过“git mergetool”,我可以看到并解决每个差异。我尝试在 .gitattributes 中指定 '* -merge' 但这似乎不起作用:
$ git checkout master
Switched to branch 'master'
$ ls
foo.c
$ git merge add-on
Updating a628824..2219552
Fast-forward
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 bar.c
$ cat .gitattributes
* -merge
$ ls
bar.c foo.c
对于上面的“git merge add-on”,我预计“bar.c”会出现合并冲突,没有基本版本,没有本地版本和远程版本。
[编辑] 正如一个答案中所建议的,上面没有发生合并。这是我强制合并的情况,仍然没有期望的合并冲突:
$ git merge --no-ff add-on
Merge made by the 'recursive' strategy.
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 bing.c
请注意,上面的“bing.c”实际上是空的;但是,这不是问题,因为提供非空文件仍然会被合并。 [编辑2]我尝试了--no-commit,结果如下:
$ git merge --no-ff --no-commit add-on
Automatic merge went well; stopped before committing as requested
$ git status
# On branch master
# Changes to be committed:
#
# new file: boom.c
#
$ git mergetool
No files need merging
$ cat .gitattributes
* -merge
我缺少什么?有没有办法确认“.gitattributes”正在被使用/读取?