2010-08-30 83 views
49
  • 如果某些文件是二進制文件,就像svn一樣,我必須設置一些東西來告訴git嗎?或者,git只能自動處理二進制數據?
  • 如果我更改二進制文件,以便我有100個二進制修訂版,git會將所有100個版本單獨存儲在存儲庫中?
  • 什麼是與git子模塊?

回答

44
  1. Git通常可以自動檢測二進制文件。
  2. 不,Git會嘗試存儲基於增量的變更集if it's less expensive to(並非總是如此)。
  3. 如果您想在項目中引用其他Git存儲庫,則使用子模塊。
4
git add my-binary-file 
git commit 
git push 

將添加您的二進制文件;它是自動的。

事實上,如果你有100個版本的文件,它會存儲它(但壓縮)。

您可以使用子模塊來引用其他存儲庫。

+13

不需要''上混帳commit' -a'。 – 2010-08-30 15:34:22

19

Git使用啓發式來嘗試確定文件是否是二進制文件。有關更多信息,請參閱此article以及如何強制git將給定文件視爲二進制文件。

有關子模塊的好教程,請參閱herehere

+0

我希望看到鏈接,但現在很難過。 – Eonil 2013-05-04 05:42:59

+1

@E我發現[檔案](http://web.archive.org/web/20130206165707/http://www.bluishcoder.co.nz/2007/09/git-binary-files-and-cherry- picking.html)。 – Anko 2013-07-26 11:08:59

+1

有關確定二進制http://bluishcoder.co.nz/2007/09/git-binary-files-and-cherry-picking.html的鏈接不再活躍。 – 2013-09-17 16:30:10

8

我基本上有同樣的問題:我想git pickle文件,它是二進制的,但git認爲它們是文本。

我在Pro Git Book中找到this chapter on Git Attributes

*.pickle binary 
-1

的問題是與的.gitignore

以下路徑是由您的.gitignore文件中的一個被忽略: XXX/YYYY所以我用這條線創建.gitattributes文件來解決問題,我/Bin1_0x1d_0x0d.bin

如果您真的想要添加它們,請使用-f。

混帳添加-f XXX/YYYY/*

OR

混帳添加-f XXX/YYYY/Bin1_0x1d_0x0d.bin