在“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”正在被使用/阅读?