2012-01-26 32 views
5

は、私がから引っ張ったり、私が働いている枝に/から、リモートリポジトリ上のブランチにプッシュできるようです。もしそうなら、リモートトラッキングブランチの目的は何ですか?リモート追跡ブランチとリモートのブランチの違いは何ですか?

は、それがブランチをチェックアウトし、それがどのように見えるかを見てのためだけですか?リモートトラッキングブランチは、リモートのブランチとミラーのように見えます。

はFYI:私はgitのにかなり新しいですが、多くのチュートリアルを読んでいると、再読み込み、私はこの時点ではまだ何もより明確にしていません!

ありがとうございます!

答えて

5

あなたは正しいです - リモートブランチは、リモートリポジトリに実際にミラー枝を行います。

リモートブランチ及びリモート追跡ブランチは、両方がフォームrefs/remotes/<remote-name>/<branch-name>のブランチを指すために使用され、例えば、報告しましたorigin/masterとなります。 (これは、リモートブランチを追跡しているブランチの概念と混同されることがあります。たとえば、マスタブランチがorigin/masterに関連付けられているということです)。

リモート追跡ブランチは、リモートリポジトリ内のブランチの最後の既知の位置を記憶することです。これはgit pullが機能するために必要です。それは、リモート(原点のmasterブランチ)にブランチからフェッチリモート追跡ブランチに格納(origin/master)、その後、ローカルにすることをマージします。コミットはローカルでのみ作成することができ、マージは作業ツリーでのみ行うことができるため、これは完全に必須です!

リモートリポジトリブランチは、リモートリポジトリで何が起こっているのかを調べるのにも役立ちます。デフォルトでは、のリモートブランチはすべてリモートブランチのです。したがって、git remote update [--prune] <remote>またはgit fetch <remote>を簡単に使用して更新し、それらをチェックして好きなように再生することができます。チェックアウトする以外にもできることに注意してください(git diff origin/master)、あなたがしていないことをコミットしているもの(git log master..origin/master)、または好きなものを見つけてください。歴史のすべての試験はローカルなので、遠隔地の支部があなたのためにそこにいなければなりません。

git pushはリモートのブランチに影響するため、リモートのトラッキングブランチを自動的に更新します。起源の主人を変えてから、それがあなたが取ってくるまでまだ元の位置にあったと思わせるのはあまり賢明ではありません!しかし、実際にはリモートトラッキングブランチに依存しません。 (あなたが追跡にpush.defaultを設定した場合、それはプッシュするかを決定するために、例えば、マスター追跡起源のマスターをトラッキング設定を使用します。しかし、それまだは、実際にはリモート追跡ブランチに依存しません。)

+0

+あなたのものは私のものより良い答えです。 – Abizern

関連する問題