2013-10-31 64 views
4

我想在我的Git存儲庫中提交一些文件,並且收到此錯誤。錯誤:提交日誌消息中的NUL字節不允許

這一切都開始於我運行git rm -rf foldergit rm -rf file並試圖提交更改。我已經能夠提交和推送沒有從我的遠程存儲庫中刪除這些文件,但我現在完全卡住了。

完整的錯誤是:

error: a NUL byte in commit log message not allowed. 
fatal: failed to write commit object 

我能做些什麼來解決這個問題?我的Google-fu讓我失望。

編輯:

我剛剛簽出這些被刪除的文件,並試圖再次提交,但它仍然給了我同樣的錯誤。我的Git倉庫已經損壞了嗎?

+0

哪個命令給出此錯誤消息? –

+1

你正在嘗試使用什麼提交信息?你在用什麼編輯器?什麼編碼? –

+0

「取決於狀態的彩色導航欄」,Sublime Text 3,試圖通過終端進行提交。 – James

回答

4

我有同樣的事情發生,沒有明顯的原因。嘗試了幾件事情,比如干淨的克隆,從iTerm2切換到終端......沒有任何區別。然後,我結束了簡單的git commit,之後我在下面的屏幕中手動輸入了我的提交信息......並且DID解決了這個問題。仍然不確定是什麼造成這種情況,但至少它已經解決了。

+0

這實際上是一個更好的解決方案,因爲它實際上每次都解決問題,所以我將這個答案標記爲解決方案。 – James

+0

以上爲我工作,以及重新啓動我的電腦。問題仍然經常出現。 –

+0

http://stackoverflow.com/a/20874631/289194解釋了這個問題的原因。你在OSX上使用smb嗎? –

4

似乎由於某種原因,NULL字節正在進入您的提交消息,Git不喜歡這樣做。嘗試從命令行提交,看看是否可行:git commit -m "My brilliant commit message"

+0

多奇怪!這工作得很好。 – James

+0

我複製並粘貼了您的消息,它工作正常。我手上寫了一條消息,它爲此而哭泣。奇怪的是,我直接輸入它,沒有錯誤,沒有按下箭頭鍵。 – James

+0

所以現在我已經刪除了文件夾和文件,試圖提交,但它不工作。我很困惑。 – James

0

我得到這個錯誤,當我從文檔複製一些文本並粘貼該文本提交消息;所以這是由於我的提交信息中有任何無效字符;所以當我只是手動輸入我的代碼容易提交。

故事的故事所以,如果你有這個錯誤,請檢查你的提交信息;如果評論消息中有任何回覆,請刪除它

1

我根據Edward Thomson對有關日誌消息編碼的問題的評論解決了此問題。我有一個PowerShell腳本調用Out-File來將信息轉儲到一個文件(恰好是從svn日誌中獲取數據),這將形成git提交日誌。將Out-File的Encoding標誌設置爲ASCII可解決此問題。

Invoke-Expression "svn log -r $rev $repoPath" | Out-File -Encoding ASCII commit.txt 
git commit -F commit.txt 
1

當您複製並粘貼在日誌中的編輯器和線返回發生轉換(\ n => \這對於每一行返回創建空字節r \ n)的

大多數文本它發生編輯器會在渲染文本時處理忽略字節,以免看到它。

一些代碼編輯器,比如plnkr更聰明,所以將日誌消息粘貼在plnkr編輯器上。您將會看到空字節爲錯誤字符。修復它然後使用您的提交的固定日誌