Git merge - 缺少冲突标记

时间:2015-09-17 23:02:08

标签: git-merge merge-conflict-resolution

使用Windows 7,git 1.9.5.msysgit.1

我在Git中读到的有关合并冲突的教程表明,合并失败会导致冲突标记被放置在文件中有问题的位置。我似乎无法实现这一目标。以下是新存储库的示例工作流程:

git init
notepad file1.txt    #make some edits
git add .
git commit -m "msg"

git branch mybranch
git checkout mybranch
notepad file1.txt #make some edits on line 3
git add .
git commit -m "msg"

git checkout master
notepad file1.txt #make a conflicting edit on line 3
git add .
git commit -m "msg"
git merge mybranch
#error: 'merge' is not possible because you have unmerged files

notepad file1.txt

最后一次打开file1.txt后,我希望看到标志>>>>>>>>和==========第3行周围的冲突标记...但是那里没有任何东西,只是文件的文本出现在主分支中。我的全局.gitconfig文件:

[user]
    name = Andrew Barger
[core]
[core]
    attributesfile = ~/.gitattribtues
    editor = 'C:\\Program Files (x86)\\Vim\\VIM74\\gvim.exe'
[merge]
    conflictStyle = diff3
[rerere]
    enabled = true

什么阻止我审查我的冲突?

编辑:     顺便说一下,This answer没有帮助我。我似乎没有任何.gitattributes文件。但是,这里是gitconfig --list的输出,如果有帮助的话:

PS C:\GitRepos\git_sandbox> git config --list
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=Andrew Barger
core.attributesfile=~/.gitattribtues
core.editor='C:\Program Files (x86)\Vim\VIM74\gvim.exe'
merge.conflictstyle=diff3
rerere.enabled=true
alias.edit-unmerged=!f() { git diff --name-status --diff-filter=U | cut -f2 ; }; vim `f`
alias.add-unmerged=!f() { git diff --name-status --diff-filter=U | cut -f2 ; }; git add `f`
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
core.hidedotfiles=dotGitOnly

2 个答案:

答案 0 :(得分:6)

在我的情况下,冲突标记没有出现,因为冲突中的文件是使用UTF-16编码的,这显然不适合Git。我意识到这是由于azurefrog建议使用git gui查看文件,这清楚地表明Git无法比较文件,因为它认为它们是二进制文件。

故事的道德:使用UTF-8编码。

答案 1 :(得分:4)

我想说,这可能是由rerere中启用的.gitconfig选项引起的。这意味着" 重用录制的分辨率"并且只需说Git就像以前解决冲突一样解决冲突

因此没有冲突标记,因为Git实际上已经解决了这个冲突。尝试禁用此选项重复您的工作流程。