2015-09-17 146 views
1

使用Windows 7,混帳1.9.5.msysgit.1Git的合併 - 衝突標記缺少

我讀過有關合並衝突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 
+1

如果您運行'git gui'嘗試手動合併,您會看到什麼? – azurefrog

+0

它注意到它需要合併衝突,但沒有顯示文件內容。相反,我看到一條消息說'二進制文件不同'...檢查我的測試文件,我發現它出於某種原因被編碼爲UTF-16 ...我會看到如果我重複使用UTF- 8文件。 – FolksymAndrew

+0

@azurefrog它是文件編碼...只要我使用UTF-8衝突標記出現。我覺得自己像個假人。如果只有Git讓我知道它試圖比較它認爲是二進制的東西! – FolksymAndrew

回答

3

就我而言,衝突標記並未出現,因爲衝突中的文件是使用UTF-16編碼的,而UTF-16顯然不適合Git。我意識到這是由於azurefrog建議使用git gui查看文件,這明確表明Git無法比較文件,因爲它認爲它們是二進制文件。

道德故事:使用UTF-8編碼。

+1

你可以(實際上你應該)將你的答案標記爲答案,這樣其他人可以很容易地看到你的問題的解決方案。 –

+0

有趣的是,我從來沒有聽說過git處理UTF-16的問題。這很好。 – azurefrog

1

我會說,它可以通過在.gitconfig啓用rerere選項引起的。這意味着「重用記錄的分辨率」,並簡單地說Git解決衝突的方式與先前解決相同。

因此沒有衝突標記,因爲Git實際上已經解決了衝突。嘗試通過禁用此選項來重複您的工作流程。