git-merge - Git merge - 冲突标记丢失

标签 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

最佳答案

在我的例子中,冲突标记没有出现,因为冲突的文件是使用 UTF-16 编码的,这显然不能很好地与 Git 配合。我意识到这一点是因为 azurefrog 建议使用 git gui 查看文件,这清楚地表明 Git 无法比较这些文件,因为它认为它们是二进制文件。

故事的寓意:使用 UTF-8 编码。

关于git-merge - Git merge - 冲突标记丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32641289/

相关文章:

git - 为什么从特定 GitHub 存储库 merge 到本地 Git 存储库会导致本地存储库中出现未提交的更改?

Git 忽略剩余的 merge 冲突

git - 从 development merge 到 master 时处理冲突

Git merge 冲突,但没有明显的区别

git - 当有人从我的 git 提交中挑选并提交了他们自己的提交时,我该如何 merge ?

git - 将 GitHub "Squash and merge"之后的分支重新设置为 master

git - 如果从_any_远程 pull ,git会 pull 自动 merge 吗?

git - 推送和 merge 之间的区别

xcode - 如何使用XCode的mergetool解决冲突?

git - 解决 SmartGit 中的冲突 - 查找冲突文件