2011-03-24 74 views
6

有2臺機器,A和B.並且有2個分支,p16和c2。Git diff報告本地更改'舊模式'/'新模式'

A具有ext3文件系統,但在B中的存檔生活與VFAT一個TrueCrypt的驅動器上,安裝顯示RW,UID = 1000,GID = 1000,的umask = 077

A已連接B的目錄樹使用sshfs進入其目錄樹,然後使用文件系統將A推入B的p16。

現在也有一些權限問題:

B$ git status 
# On branch p16 
nothing to commit (working directory clean) 
B$ git checkout c2 
Switched to branch 'c2' 
B$ git checkout p16 
error: You have local changes to 'help.txt'; cannot switch branches. 

git的差異表明了我一個改變的模式,所有的文件現在:

B$git diff 
diff --git a/help.txtt b/help.txt 
old mode 100644 
new mode 100755 
diff --git a/169.txt b/169.txt 
old mode 100644 
new mode 100755 
... 
(a list with all files having their mode changed follows) 
... 

我想這個問題是本地文件系統是一個VFAT TrueCrypt的容器和文件系統不允許其他機器期望的權限。

任何想法如何我可以更好地鏈接2臺機器與不同的文件系統?

+0

只是一個猜測,但是分支p16有一個.gitignore,它忽略了帶有變化的文件? – coreyward 2011-03-24 20:32:04

+0

p16有2行gitignore,查看更新後的問題 – mit 2011-03-24 20:33:43

+1

你在Windows上嗎?它缺少一個'x'位,這會導致你描述的很多痛苦。 – 2011-03-24 20:37:24

回答

8

如果操作系統的文件權限沒有正常工作,就會出現這種使用git的問題。例如,當安裝外部文件系統時。

溶液中指出meagar在他上面的問題評論:

只要確保你有一個線

filemode=false 
中的.git

/config的意志(內[core]部分)告訴git忽略它正在跟蹤的文件的可執行位。

做同樣的事情會去混帳回購協議的終端和類型的根目錄下的另一種方式:

git config core.filemode false 

注意更改此設置有時需要,但除此之外,它是更好保持默認行爲。在很多情況下,git必須正確跟蹤文件權限,這一點很重要,因此您的項目可以按照應有的方式工作。

+0

這看起來很危險。這也絕對超出了我的知識領域。在git中做這件事可能會有什麼後果? – dudewad 2017-01-10 05:51:41