0

git卒論で使用しています。プロジェクトには、テキスト ファイル (コード、*.tex) とバイナリ ファイル (図) が含まれています。

  • テキスト ファイルは git リポジトリによって追跡されます
  • バイナリ ファイルは git によって追跡されませんが、同じディレクトリに存在します。

私はデスクトップとラップトップで作業しており、ssh経由で同期することもあれば、USBドライブ経由で同期することもあります。私の問題は、この同期を適切に処理する方法です。コードしかない場合はgit pullgit pushまたはを使用しますgit bundle。問題は、これにはバイナリ ファイルが含まれないことです (つまり、デスクトップで作成した図はラップトップに転送されないためlatex、ラップトップでは図が欠落しているため失敗します)。したがって、現在rsyncは同期に使用していますが、使用することの多くの利点が失われていgitます。

私がしたいこと:

  • git「ここにいくつかのバイナリ ファイルがあります。またはまたはを実行するときにそれらを含めてgit pushくださいgit pullgit bundle
  • これはバイナリ ファイルであるため、追跡したくありません。つまり、現在の状態のみをコピーし、変更はコピーしたくありません。

gitこれまでのところ、回避策 (コードとrsyncバイナリ ファイルの同期のためにシェル スクリプトを作成する) しか思いつきませんでした。しかし、これは扱いにくいので、より最適な解決策を探しています。

ありがとう、サイモン

4

3 に答える 3

2

git-annex は必要なことを正確に実行すると思います: http://git-annex.branchable.com/

于 2012-10-04T21:12:05.877 に答える
0

考えられる解決策の1つは、バイナリファイルを別のブランチに保持し(おそらくgit checkout --orphan <branchname>?を使用して孤立させて)、を使用することgit commit --amendです。そのブランチを含むプッシュとプルは、ほとんどの場合常に使用する必要があります--forceが、機能する可能性があります。

これによりリポジトリに多少の肥大化が残りますが、バイナリファイルの履歴が保持されないため、ガベージコレクションのために上限があります。

于 2012-06-15T14:13:31.517 に答える
0

私はおそらくこのように物事を整理します:

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

そうすれrsyncば、exclude パターンやリポジトリの損傷を過度に心配することなく project-data ディレクトリで自由に使用でき、追跡されていないファイルのノイズを心配することなく、メイン プロジェクトで自由にgit fetchgitを使用できます。pushもちろん、コードと .tex ファイルは、現在の場所ではなくサブディレクトリからプルするように少し変更する必要があります。

于 2012-06-15T14:50:35.527 に答える