2016-12-15 172 views
1

我有多個git存儲庫,都是UTF-8編碼,並正確顯示元音變音。我希望他們被合併成一個單一的回購協議(每個原始回購協議都是新的單一分支)。我的系統被配置爲使用utf-8作爲默認的git編碼。 我做以下步驟:git fetch變化德語變音符號

git init test (initializes as utf-8) 
cd test 
git remote add test_remote C:/temp/remote_repo 
git fetch --all 
git checkout -b test_local test_remote/master 

在那之後,我在當地的分支機構test_local所有提交的遠程分支主。我的問題是,德語變音符號沒有正確顯示,但git log爲ü提供了類似的功能。

我的問題是,爲什麼git fetch改變編碼,爲什麼它沒有正確顯示在新的回購,因爲它也是utf-8?

我附的如何獲取遠程回購和提交信息的變化,而在提交散列的示例保持相同: Git Bash Screenshot

+0

Git一般*根本不*觸及你的任何數據:它都只是原始字節串。任何編碼解釋都取決於其他軟件,例如查看提取文件的編輯器或查看提交的尋呼機。但是有一些令人討厭的角落案例,一些操作系統堅持要搞亂路徑名稱。因此,指定您的操作系統和字符出現位置非常重要:提交元數據(如日誌消息),文件元數據(如文件名)或存儲在存儲庫中的文件數據。 – torek

+0

我使用的是Windows 10,沒有編輯器而只是使用git命令行。錯誤編碼僅出現在提交消息中,所有其他數據和元數據都可以看到。如果我在原始回購庫中使用git show,它會正確顯示變音符號,如果我在取回的回購庫中使用相同的命令,則會有神祕的標誌。 – MxNbrt

+0

我不使用Windows,所以我不能真正幫助,但它確實是某種設置,Windows以某種方式不理解。提交消息中的原始數據字面*不能被更改,永遠不會改變提交散列,因此它不再是相同的提交。更熟悉Windows 10的人可能會指出問題所在。 – torek

回答

0

起初我試圖通過執行chcp 65001改變我的窗口命令行的代碼頁。由於這沒有奏效,我試圖將不支持unicode的程序設置爲utf-8的程序的os語言,但那也不起作用。

經過長時間的搜索,我發現問題出在源存儲庫,其中git config --list顯示,i18n.commitencoding被設置爲一些Windows編碼。切換到utf-8後,現在一切正常。