2009-09-04 22 views
3

ローカルにいくつかの変更をコミットし、git push origin masterを使ってgithubにプッシュします。それは常に完全なコードベースをプッシュします(転送されるデータ量で判断します)。Gitはpush origin masterを毎回リポジトリに送ります。

私は単純なものを見逃しているにちがいありません。変更されたファイルを押し上げるだけですか?

答えて

1

Gitがリモートに送信する「オブジェクト」の数を見ていると、これは誤解を招く可能性があります。 Gitはコミットのすべてのファイルだけでなく、すべてのディレクトリ(ツリー)、すべてのコミット、すべてのタグについてもオブジェクトを作成します。マージのような操作をしている場合は、予想以上にコミットが多少あるかもしれません。

リポジトリの容量はどれくらいですか?あなたはデータの量を判断するために何を目指していますか?

1

Gitはファイルツリー全体をバージョンし、各コミットはツリーの完全なスナップショットを指します。 Gitはリポジトリのサイズを小さくするために圧縮に依存します。したがって、あなたが押したときに転送される必要があるデータは、差分ではなくこれらのスナップショットです。実際には、Gitはサーバに最新のコミットが何であるかを問い合わせ、そのブランチの上に構築されているすべてのローカルコミットを送信します。オブジェクトは、転送されたときに圧縮されている可能性がありますが、まだスナップショットです。

これは少なくとも私の理解です。

0

これは簡単な答えかもしれませんが、私が作ってきた間違いは「git add」です。変更をコミットすること。

"git add filename"と入力して "git push origin master"と入力すると、このファイルのみがgithubに転送されます。

+3

リポジトリに既に存在し、変更されていないファイルに対して 'git add'を使用することは無害です.Gitはこれを認識して実際に何もしません。しかし、 'git add .'で追加された他の*ファイル(コンパイルされた' .obj'ファイルなど)があれば、それはあなたが見た動作を確実に説明することができます。変更されたものとGitのアイデアが実際に一致するかどうかを確認するために、 'git status 'を頻繁に行う習慣に入るのは良い考えです。 –

2

それは私にとっても謎です。私の同僚が追跡の枝を作成することができますことを発見した:

http://www.zorched.net/2008/04/14/start-a-new-branch-on-your-remote-git-repository/

EDIT私は、リモートブランチを作成する前に引っ張っていない場合にこれが起こることがわかりました。私が最初に引っ張ってくると、ほとんど何も送られません。

関連する問題