2012-06-15 106 views
0

我正在使用git作爲我的論文。該項目包含文本文件(代碼,*.tex)和二進制文件(圖)。git處理未跟蹤的二進制文件

  • 文本文件是由git倉庫
  • 二進制文件不被跟蹤的git跟蹤,但駐留在同一目錄中。

我正在使用我的臺式機和筆記本電腦,有時通過ssh同步,有時通過USB驅動器同步。我的問題是如何正確處理這種同步。如果我只有代碼,我會使用git pull,git pushgit bundle。問題是這不包括二進制文件(即,我在我的桌面上製作的圖不會傳輸到筆記本電腦,因此筆記本電腦上的latex因爲缺少圖形而失敗)。因此我目前使用rsync進行同步,但是我放棄了使用git的許多優點。

我會想做什麼:

  • 告訴git「這裏有一些二進制文件,請這樣做,因爲這是一個git pushgit pullgit bundle
  • 時,包括他們的二進制文件,我不想讓他們被跟蹤,即我只想要當前狀態被複制,而不是更改

到目前爲止,我只能想出解決方案解決方案(圍繞01構建shell腳本代碼爲,同步二進制文件爲rsync)。但是這使得工作變得尷尬,所以我正在尋找更優化的解決方案。

感謝, 西蒙

+1

什麼是不想要跟蹤的二進制文件的原因是什麼?它們是否過大並經常變化?如果他們不是這兩個,那麼我只是將它們添加到回購並追蹤它們。 –

+0

他們不會經常改變,但他們會做(更新數據的情節的新版本,改變圖中的細節)。即使只有幾個修訂版本,版本庫的大小也會很快爆炸。 – Simon

+0

你有沒有試過跟蹤他們,並看到相當可觀的性能?即使你有一百個數字,你在TeX中處理的任何圖像格式都不會產生比許多應用程序更大的.git目錄。如果您不喜歡USB驅動器的延遲,您是否考慮過github或bitbucket?前者每月7美元可滿足您的需求。後者是免費的。 – Christopher

回答

0

一個可能的解決辦法是保持在一個單獨的分支(使用git checkout --orphan <branchname>可能是孤立的?),只有用不完git commit --amend的二進制文件。推動涉及該分支幾乎總是不得不使用--force,但它可以工作。

儘管這會在存儲庫中留下一些膨脹,但由於垃圾收集不會保留二進制文件的歷史記錄,所以會有上限。

+0

我看不出這會如何工作。當我從孤立二進制分支切換回我的一個源分支時,我在二進制分支中工作時添加的文件不再可見。 – Simon

0

我可能會整理東西是這樣的:

project 
    .git 
    .tex files 
    code files 
    data symlink to ../project-data 
project-data 
    images, etc 

這樣,你可以在項目數據目錄使用rsync自由,而不必太在意排除模式和/或損壞你的資料庫,並使用git fetch和git push免費在主項目中,而不必擔心未跟蹤文件的噪音。當然,您的代碼和.tex文件需要稍微修改,以便從子目錄中取出事物,而不是現在的位置。

+0

我同意這個解決方案非常好,但它仍然是一個解決方法:我總是要做兩件事:'git fetch'和'rsync'。 – Simon