2012-02-18 10 views
4

私はリモートGITリポジトリを使用すると大きなプロジェクト(数百MB)を持っていますが、GITクライアントは単一のファイルに小さな変更を加えてもディレクトリ全体をプッシュしますか?GITプッシュはどのように機能しますか?

おかげ

答えて

2

あなたは、すべてで行われた変更を超えるコピーのみ、最後のプッシュ以来コミット号Gitリポジトリ。

8

いいえ、gitクライアントとサーバーは、変更されたオブジェクトのリストをネゴシエートし、それらのオブジェクトのみが送信されます。絶対に必要以上に送信する唯一の時間は、 "ダム" HTTPサーバーを使用し、クライアントで必要以上のオブジェクトを含む完全なパックを取得することです。

http://book.git-scm.com/7_transfer_protocols.htmlには、技術的なレベルでのプロトコルに関する詳細がいくつかあります。その方法と理由を気にする場合は、さらに進んでください。

+1

、送信されているすべては、単一のパックに、デルタ圧縮され、デフォルトでは、deltificationは相対することができリモートに存在するが、パックでは送信されていないことがわかっているオブジェクトに送信します。 – Cascabel

2

"プッシュ"は、あなたのケースでは、あなたのローカルリポジトリとリモートサーバ上のレポジトリを同期させるGitの方法です。

リポジトリの更新は、変更をコミットするときに発生します(実際には、「追加」するときには技術的には必要以上に深刻になります)。あなたがコミットすると、Gitは最後のコミット後に行った差分変更に関する情報を保存しているだけです(ファイルを複製しているわけではありません)。しかし、そのコミットは、あなたがプッシュするまであなたのローカルマシン上でのみ行われます。あなたがプッシュすると、Gitはあなたのローカルリポジトリで行った更新をリモートサーバ上のレポと同期させているだけです。

プロGitは簡単で素晴らしい読み込まれ、それがうまく、このようなことを説明します。さらにhttp://progit.org/book/

関連する問題