2013-02-07 42 views
2

我在Linux上使用GIT,我的同事在Windows上使用GIT。合併具有不同行尾字符的文件

我對文件進行了一些更改,我的同事對該文件進行了一些其他更改。

我的同事推,我拉。

現在,我的整個文件是一個很大的矛盾:

<<<<<<< HEAD 
... 
[my version] 
.... 
======= 
... 
[colleague's version] 
... 
>>>>>>> branch 'master' of https://github.com/rothariel/aimnegochat.git 

我能做些什麼?我如何合併更改?

回答

3

從這篇文章在github上可以克服這樣的問題

建議EOL爲\ n,你可以用它來自動轉換

git config --global core.autocrlf input 
# Set this setting on OSX or Linux 

git config --global core.autocrlf true 
# Set this setting on Windows 

看一看的例子下一步怎麼辦。

https://help.github.com/articles/dealing-with-line-endings

+1

這並不完全回答「我現在該做什麼?」這回答了「我將來如何避免這種情況」這個問題。請參閱http:// stackoverflow。com/questions/861995/is-it-it-it-it-it-it-it-git-merge-to-ignore-line-ending-differences和http://stackoverflow.com/questions/1522933/clarifying-clearing-up-line-ending-爲了讓自己擺脫目前的混亂,然後讓你的Windows朋友們關注未來,回答這個問題。 – user37078

+0

你說得對,我現在需要一個解決方案。你提到的第一個鏈接解釋瞭如何做合併,問題是我已經做了合併...第二個鏈接解釋瞭如何修復存儲庫,但不是如何解救合併的文件... –

+0

拯救合併的文件?將git checkout設置爲之前的狀態,然後在github文章中設置正確的配置後執行合併。 – Redian

-1

您需要將您的同事所做的更改與您的更改合併。只需編輯文件和add to index。您可以在此之後commit您的更改。

+1

那麼,這正是我所問......我如何合併更改?我甚至不知道同事的變化是什麼,也不記得我的變化......通常情況下,合併是自動發生的,在這種情況下是否有辦法讓這種情況發生? –

+0

你正在使用哪個IDE? – ogzd

+0

您不需要記住您的更改或您的同事更改。 '<<<<<< HEAD'和'>>>>>> master'顯示您的本地和遠程分支之間的哪個特定區域不同。您可以簡單地查找每個不同的句子。請看看'git mergetool'命令。 – ogzd

1

我有一個類似的問題:

git merge <master|branch|whatever> -s recursive -Xignore-space-at-eol 

似乎做什麼,我需要做的,但它給我的錯誤:

error: addinfo_cache failed for path ... 

但是:

git merge <master|branch|whatever> -s recursive -X renormalize 

似乎做的伎倆。

我每次檢入文件時仍然遇到行結尾的問題。提交/合併過程中的某些內容將我的行結束符切換回它們不應該包含的內容。

我已經試過搞亂與周圍的

git config --global core.autocrlf <true|input|false> 

設置,但它似乎並沒有解決這個事實的東西是改變我行結束在git的工具鏈。

相關問題