2011-02-25 65 views
0

我有一個沒有任何版本控制的基於Windows的PHP項目(CRLF Newlines)。我最近把這個項目放到我的OSX機器上的Git上。另一位開發人員在不在Git中的情況下對源代碼進行了更改(在單獨的機器上),現在我必須將這些更改合併到回購中。將Windows PHP項目遷移到Git並應用OSX更新/修補程序

我原來的計劃是使用diff/patch來使所有的事情都同步起來。問題在於,他在OSX上進行了更新,因此我必須轉換換行符才能進行diff/patch工作。

有沒有辦法使CRLF換行符差異化工作?根據我讀過的內容,在應用diff之前,您必須先將轉換轉換爲LF。

如果不是,我只需遞歸遍歷所有文件並進行換行符轉換?

我是否會以適當的方式更新此回購協議?

回答

1

創建補丁程序時,應該能夠告訴您用來忽略EOL更改或空白更改的工具。另外git applygit am有一些關於它們如何處理空白的選項,但我沒有使用它們,所以我不確定它們如何處理具有額外空白和EOL變化的差異。

恕我直言,真正的解決方案是修正所有CRLFs在您的回購LF,因爲如果一切都使用回購LF線結尾,git效果最好。如果需要,可以選擇在結賬時將行結尾更改爲CRLF,同時仍在內部使用LF。

+0

感謝您的反饋!你指出我正確的方向。 – 2011-02-25 20:56:41

0

甜!

首先,我需要擺脫所有的CRLFs。我用rm -rf .git/殺死了我的整個git回購。然後我大致遵循GitHub的Dealing with Line Endings,這是從這個stackoverflow Q&A

# switch on the conversion of line endings on commit 
$ git config --global core.autocrlf input 

# Initialize 
$ git init 
$ git add . 
$ git commit -m "First Import" 

# If you're doing this on a Unix/Mac OSX clone then optionally remove 
# the working tree and re-check everything out with the correct line endings. 
$ git ls-files -z | xargs -0 rm 
$ git checkout . 

我然後跑diffpatch對相應的文件夾,跑到最後commit。一切都同步了!

相關問題