2011-07-31 76 views
5

我是git的新用戶,無法弄清楚如何解決這個問題。我對SVN有過一些經驗,並且正在進行SVN行爲。爲什麼我總是要手動合併git pull?

任何時候我從遠程存儲庫中提取文件,並且我修改的文件也是遠程修改的,它需要合併。我可以理解複雜變化的合併衝突,但是我發現合併衝突很小(例如,不同函數中的一行更改)。據我所知,SVN可以自動合併大部分內容,並且只有在自動合併失敗時纔會使文件處於衝突狀態。

對於git,它似乎每次都在發生,並強制打開git merge工具。有沒有辦法自動合併文件?我是否缺少一些基本上將存儲庫置於衝突設置的設置?

+0

還在嗎?你可以評論答案,說出他們是否適用,並回答包含的問題。 (如果答案解決了您的問題,請通過單擊複選標記圖標接受它。) –

回答

8

這是一個常見的原因是不同的行結束。您是否與其他人使用不同的操作系統共享回購? SVN做了一些線路結尾的清理工作。另一方面,Git默認情況下按字節存儲文件。這意味着,當Windows用戶使用\ r \ n行尾保存文件並且Linux用戶使用\ n換行符保存該文件時,每行都會發生更改,並且如果發生其他更改,則會導致到處發生衝突。要更改處理行結束的方式,請使用配置設置「core.autocrlf」。在回購,其中不同的操作系統都在玩,我建議將其設置爲「輸入」爲Linux用戶和「真」爲Windows用戶:

git config [--global] core.autocrlf input 

git config [--global] core.autocrlf true 

其實,我想說只需在全球範圍內隨時使用這些設置。他們會爲你節省一些心痛。請閱讀git-config man page上關於core.autocrlf的更多信息,並注意如果您遇到此問題並且您使用現有存儲庫啓用autocrlf,則可能會看到一些令人吃驚的行爲,但可以解釋它。

+0

+1對於讀心,顯然;-) – Peter

3

從手冊:

https://book.git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging

git的承諾-a

此時兩個分支有分歧,具有不同變化 在每個製成。要合併在實驗中所做的更改到主, 運行

混帳合併實驗

如果改變並不衝突,你就大功告成了。如果存在衝突, 標記將留在顯示衝突的有問題的文件中;

git diff

會顯示出來。一旦你編輯文件解決衝突,

git的承諾-a

將提交合並的結果。最後,

gitk

將顯示結果歷史的一個很好的圖形表示。

問:您使用的是什麼Git客戶端? Git命令行工具?或者是其他東西?

問:另外,有問題的文件是Linux還是Windows?或者他們來自不同的環境?

+0

對於精心挑選的鏈接+1,簡潔+相關摘錄 – Peter

相關問題