2010-12-12 16 views
1

こんにちは 私は2つのローカルブランチ - mastertestを持っています。Gitリモートブランチ再利用巨大ファイル

ブランチmasterに20MBファイルを追加し、それをリモートmasterにプッシュしました。

mastertestにマージします。 testをリモートtestにプッシュしました。

もう20MBをもう一度アップロードする必要があります。とにかくこの問題の周り?

両方のリモートブランチが同じリモートにあります。

(master) touch hugefile 
(master) git add hugefile 
(master) git commit -m "huge" 
(master) git push origin master (upload 20MB) 
(test) git merge master 
(test) git push origin test  (< upload 20 MB again) 

SOLUTION

テキストとしてを検出しているautocrlf=Trueバイナリファイルに問題がある可能性があります。

gitに* .pdfファイルをバイナリファイルとして検出させることで、この問題を解決しました。

http://www.bluishcoder.co.nz/2007/09/git-binary-files-and-cherry-picking.html

+1

アップロードを本当にやり直していますか?私はgitがファイル全体を再送するのではなく、変更されたものに関する情報を伝えるほどスマートでなければならないと思います。 – MatrixFrog

+0

奇妙な状況、今はすべて正常に動作します。たぶん 'git fetch --all'が欠けていたかもしれません。 – aatdark

答えて

2

Gitはファイルを再度アップロードされません。ファイルの内容は複数のコミットが指すことができるリポジトリ内のブロブとして(ツリーを介して)格納されます。新しいコミットを行うと、作成されたツリーオブジェクトは、最初に追加したファイルを指します。具体的には、testブランチをheadと同じ位置に移動し、プッシュするとその情報をサーバーに戻すだけです。ファイルの追加はまったくありません。

関連する問題