2012-01-04 57 views
2

我有一個包含一些二進制文件的git repo。我已經將一個chmod 755加入到其中一個二進制文件中,並且我希望生成這種模式變化的差異,可以通過git-apply將其應用到另一臺機器上。我使用的是:如何生成一個模式改變到二進制文件的git diff(patch)?

git diff --no-color --no-ext-diff --binary --cached 560d4ad7ca02fe3cb2403da89fadae0c27fbbe73 

這只是正常的非二進制模式的改變,甚至只要二進制本身也發生了變化二元模式將改變。但是如果只有二進制文件的模式發生了變化,那麼上面的diff是空的。

git diff --no-color --no-ext-diff --binary --cached --raw 560d4ad7ca02fe3cb2403da89fadae0c27fbbe73 

不幸的是,上述命令的輸出不能被送入git的應用:

:100644 100755 e944703... e944703... M asbserver 

任何想法

,如果我用我可以從git的差異輸出?在我看來,如果二進制文件的內容和模式改變都有變化,diff的工作就會變得很奇怪。

回答

0
$ chmod +x foo 
$ git diff 
diff --git a/foo b/foo 
old mode 100644 
new mode 100755 

我得到一個似乎可用的差異。也許你的問題更多的是在應用方面。你如何申請你的補丁?你在使用--apply switch嗎? (在某些情況下可能需要,這取決於您的完整命令)。以下

編輯點評:隨着一個二進制文件,我得到:

$ chmod +x favicon.ico 
$ git diff 
diff --git a/assets/favicon.ico b/assets/favicon.ico 
old mode 100644 
new mode 100755 

而且爲favicon.ico被猜中二進制:

$ git show f948cbeb33532d0803a9c | grep favicon 
diff --git a/assets/favicon.ico b/assets/favicon.ico 
Binary files /dev/null and b/assets/favicon.ico differ 
+0

的「富」文件,你已經創建沒有按」 t似乎是一個二進制文件。這適用於非二進制文件。嘗試使用二進制文件。問題不在應用方面,問題在於'git diff'給出了0個輸出。 – 2012-01-04 20:08:53

+0

已更新,以對二進制文件進行比較。你的項目.git/config中有一些東西會影響diff命令的運行方式嗎? – 2012-01-04 20:15:44

+0

不,看起來不像。唯一的設置是filemode = true和repositoryformatversion = 0。你確定git將你的ico文件視爲二進制文件嗎?你在哪個操作系統上? – 2012-01-04 20:43:24

相關問題