2011-05-24 57 views
4

我一直在使用autocrlf設置爲true的git。我一直通過cygwin與git-svn一起使用它。這一直導致我的一堆問題,我看到herehere,我應該關掉它。我怎樣才能「恢復幹線和主人之間的損害」?如何撤消autocrlf的破壞?

回答

4

如果你只是想解決它在一個單一的提交,然後息事寧人,你可以這樣做:

find . -not \(-path ./.git -prune \) -type f -exec sed -i -e 's/\r//g' {} + 

注意:這將從刪除CR的每一個文件存儲庫中的。在-type f之後添加-name '*.someext'或其他子句以調整搜索範圍。

如果要編輯之前提交(注意,這會破壞其他人試圖自己的修改合併到分支!),你可以使用git filter-branch - 編寫一個腳本,它類似於上面的find調用的東西,然後通過它與類似的東西

git filter-branch --tree-filter /full/path/to/myscript.sh master otherbranch 

這將重寫歷史記錄,消除任何曾經在源代碼庫中的CR。請注意,如果你在git-svn創建的任何提交中運行它,這可能會破壞git-svn。你可以使用像trunk..mylocalbranch這樣的東西只在本地提交時運行它。