2012-01-12 42 views
20

我通過複製到外部硬盤驅動器將一堆git存儲庫移動到另一個操作系統。現在當我做git diff它報告所有的文件模式已經改變。移動存儲庫後git diff報告模式發生變化

diff --git a/.gitignore b/.gitignore 
old mode 100644 
new mode 100755 
diff --git a/.npmignore b/.npmignore 
old mode 100644 
new mode 100755 
diff --git a/.travis.yml b/.travis.yml 
old mode 100644 
new mode 100755 
diff --git a/LICENSE b/LICENSE 
old mode 100644 
new mode 100755 
diff --git a/README.md b/README.md 
old mode 100644 
new mode 100755 

我對文件權限並不十分了解,對此我該怎麼辦?

提交模式更改?將模式更改爲所有非可執行文件? git重置?

+0

它從操作系統和操作系統? – 2012-01-12 22:19:13

+0

Xubuntu到Crunchbang Linux – fent 2012-01-12 22:21:46

回答

11

也許你的外部硬盤有不同的文件系統,它不尊重原始文件權限。我只是在提交之前用手改正它們。

例如,在USB拇指驅動器上常用的FAT32不支持執行權限。當您將文件從FAT32文件系統複製到普通的類Unix文件系統時,它通常會爲所有文件設置執行權限,因爲這對文件關閉的損害要小。

如果您想保留這種信息,請不要直接將文件複製到驅動器;相反,製作一個tar文件(可選壓縮),然後在另一端解壓縮它。 tar格式確實記錄了Unix權限位。

請注意,git本身不會跟蹤超過可執行與不可執行的數據。如果模式更改是唯一區別,並且您不想重新複製所有內容,則可以將git diff的輸出轉化爲腳本,並在所有受影響的文件上執行chmod -x

+0

如果是這樣的話,我會重新調用它們。我正在考慮將所有內容壓縮成一個文件。沒辦法,我正在手動更正所有這些文件。 – fent 2012-01-12 22:31:17

+0

或者用更聰明的文件系統重新格式化你的外部磁盤。你要從哪裏進行什麼FS,以及將外部磁盤格式化爲什麼? – 2012-01-12 22:32:03

+1

from/to:ext4,external:ntfs – fent 2012-01-12 23:11:24

39

您可以將此設置

git config core.filemode false

導致git的忽略文件模式的差異。

該解決方案在@根的回答被發現another question

+1

@ DeaDEnD這應該被標記爲正確答案IMO,或許在Q中值得一提? – 2015-07-24 07:06:37

相關問題