2009-10-21 77 views
46

我已經設置了Git,因此它不會提交不一致的行尾。與此相關的問題是整個文件堆出現,即使它們不是。爲了使這些文件的行結束在本地固定,我應該輸入什麼內容?使Git「LF將被CRLF替換」警告消失

# git checkout dev 
M src/au/policy/dao/EmailQueue.java 
M src/au/policy/dao/EmailQueueFactory.java 
M src/au/policy/dao/PolicyPublisher.java 
Already on 'dev' 

# git diff 
warning: LF will be replaced by CRLF in src/au/policy/dao/EmailQueue.java 
warning: LF will be replaced by CRLF in src/au/policy/dao/EmailQueueFactory.java 
warning: LF will be replaced by CRLF in src/au/policy/dao/PolicyPublisher.java 

這是我加入這似乎做什麼,我從這個問題旨在拋開我的混帳配置文件:

autocrlf = true 
+0

會刪除有問題的文件並重新檢查它們是否有可能? – corydoras 2009-10-21 05:26:12

+0

是的,如果除鏈接結尾之外沒有任何區別,只需刪除並重新檢出違規文件。 – 2009-10-21 06:18:24

+0

相關,但不一定是重複的問題:[用gf替換LF與CRLF](http://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf)。 – 2013-07-13 21:19:02

回答

16

您可以直接刪除,並重新籤從索引中問題的文件是這樣的:

rm <files> 
git checkout -- <files> 

或者,如果他們是唯一修改的文件(謹慎使用該命令),你可以編寫腳本它像這樣的:

git diff --name-only --diff-filter=M | xargs rm -- 
git checkout -- . 

在一個GNU系統,您可以使用一個稍微更安全的管道,但你似乎沒有空格或其他字符限定在任何情況下,你的文件名。

git diff -z --name-only --diff-filter=M | xargs -0 rm -- 
24

我能想到的是唯一的事情,以檢查是否core.safecrlf設爲warn

git config --get core.safecrlf

認爲可能的值是truefalsewarn。我相信設置爲false將解決警告,但它可能不是一個好主意。

+0

將其設置爲false做到了。謝謝! – 2014-05-15 00:10:31

+1

這可能只是隱藏了消息,但仍然保留了cr/lf更改的效果。 – 2014-06-24 06:20:25

+1

將'safecrlf'設置爲'false'會損壞二進制文件,這就是爲什麼它默認爲'warn'。 – Walf 2014-08-20 02:07:33

60

如果你改變core.autocrlf配置變量(如果我正確地理解您的問題)可能發生這種情況。

如果你在乾淨的狀態,即剛提交之後,你不必uncomitted變化,被迫重新籤和刪除索引應該做的伎倆:

下面的命令git reset --hard HEAD會使您的當前分支指向最新的提交,並且所有未提交的代碼都將丟失。確保提交的代碼或採取備份

$ rm .git/index 
$ git reset --hard HEAD 

也就是說,我想,會同步兩個工作區文件和索引(臨時區域)跟隨CRLF設置。

+3

你顯然知道你的git,對我很好。謝謝!真!非常感謝你! – 2011-01-06 22:05:17

+0

應該認爲這是可接受的答案。很好地工作@ jakub – 2014-12-10 13:24:55

2

試試這個,它的工作對我來說:

cd src/au/policy/dao 
dos2unix 

如果有該文件夾中的其他文件,那麼你會希望它分解成以下(否則會盡力去做每文件中的任何子目錄,這可能需要一段時間):

cd src/au/policy/dao 
dos2unix EmailQueue.java 
dos2unix EmailQueueFactory.java 
dos2unix PolicyPublisher.java 

它跑在我的機器上非常快,並固定所有的行結尾的,而且它比一些其他修復的稍微簡單一些,更容易。

+0

不適合我。 – luckytaxi 2016-06-21 20:26:55

31

我在創建新的Xcode項目時遇到了這個問題。 我對這個問題的解決方案:在混帳配置文件更改

在終端寫

$: git config --global --edit 

然後safecrlf。我的設置:

[core] 
    autocrlf = input 
    safecrlf = false 

我知道git有cmd線工具,但他們不適合我。 然後Xcode創建git回購沒有任何問題。

+2

@Andrei它很可能使用[vim](http://www.vim.org/)作爲編輯器,按下escape鍵退出輸入模式並鍵入':wq'保存並退出。 – GP89 2013-03-07 14:07:10

+0

唯一的解決方案,爲我工作,所有其他人失敗,「git版本1.8.1.msysgit.1」Windows 7(git bash) – 2013-05-17 10:04:14

相關問題