2014-02-07 91 views
1

我有一些大型視頻文件,我不想將它們推送到遠程,但是我想將它們添加到我的本地存儲庫。有點像遠程版本的.gitignore文件。我可以添加文件到我的本地Git倉庫,但不會將它推送到遠程

這可能嗎?

更具體地說,我正在開發一個多媒體項目,一個文件夾包含項目元數據文件(這是一個Screenflow項目)以及媒體。所以它有一個project.screenflow文件夾都.dat文件和Media\XXXX.aifMedia\XXXX.mov

我想分享至少在項目文件(.dat)與我的團隊和它沒有任何意義,如果在Screenflow打開項目了你沒有它使用的媒體。但是,我們的Git repo存在100MB的文件大小限制,從而阻止我推送這些文件。

目前,我已經排除在.gitignoreMedia,並可能通過其他手段:(共享媒體

+0

'git add',但從來沒有'git commit'呢?或者你想修改它嗎?如果是這樣,建立一個新的分支,當你合併你的分支時,你可能需要「櫻桃選擇」。 – 2rs2ts

+0

@ 2rs2ts,如果你從未'git commit',倉庫的意義何在? – Shahbaz

+0

在git中存儲大的二進制對象不是最好的主意。你確定你要跟蹤視頻文件的修訂嗎? – Greg

回答

1

.gitignore不會阻止您在存儲庫中擁有文件(您始終可以強制它)。所以這不是真的像在遠程的.gitignore

您的問題的直接答案是,這是不可能的。 Git保存你的提交歷史。每個提交都由其內容進行(並散列)。如果你在一個提交中有一個文件,並且你推送了這個提交,那麼你不能要求git只推送那個提交的一部分,因爲那樣它就不會再是同一個提交了。

但是,有些方法可以實現你想要的東西,其中沒有一個是非常乾淨的。一個例子是使用git子模塊創建一個子模塊,該子模塊指向另一個本地回購(具有視頻文件)。任何克隆遠程回購的人都不會收到視頻文件,但他們仍然可以看到指向您計算機某處的子模塊。

另一種方法是使用git subtree從你擁有的實際創建另一組提交,不包括視頻,然後將那些人工提交的提交推送到您的存儲庫。但是它強加了一些目錄結構。

這種問題的常見答案通常是重新考慮您的存儲庫。這些視頻對您的存儲庫至關重要嗎?如果沒有,那麼不要將它們放在存儲庫中,既不是本地的,也不是遠程的。像這樣的額外資源不屬於git存儲庫(特別是因爲它們也沒有版本)。

如果你只希望他們在你的本地計算機上,通過一切手段只是讓他們在其他目錄。如果你真的想要訪問舊版本,請將其他目錄保留在git下。如果您希望其他人也能看到這些文件,請將它們放在文件共享網站上。

0

不使用常規的git的方法。有文件中的回購將改變所有提交的哈希它後面。然後在服務器端不匹配。我會考慮解決爲什麼你需要他們生活在相同的回購,你必須推動。

你可以讓他們在一個單獨的回購當時如果你正在處理的話,通過本地的git鉤子拉進來?如果你在你的問題中詳細說明你的情況,我們可以幫忙。

相關問題