1. ホーム
  2. ギット

[解決済み】トラッキングブランチとは何ですか?

2022-04-17 14:54:41

質問

git に適用される "tracking branch" について、どなたか説明してください。

以下は、その定義です。 git-scm.com :

<ブロッククオート

Gitにおける「トラッキングブランチ」とは、ローカルの ブランチは、リモート ブランチです。そのブランチ上でプッシュやプルをすると ブランチは、自動的に リモートブランチにプルする と接続されています。

からのプルを常に行う場合に使用します。 同じ上流ブランチから新しい ブランチを使用したくない場合、そして git pull"を明示的に実行します。

残念ながら、git の初心者で SVN から来た私には、この定義は全く意味がありません。

"に目を通しています。 Git の実用的なガイド トラッキングブランチは良いもので、最初のリモート (この場合は origin) を作成した後に master ブランチをトラッキングブランチにするよう設定することが推奨されているようですが、残念ながらこの本では トラッキングブランチが良い理由 または masterブランチをオリジンリポジトリのトラッキングブランチにすることで、どのような利点がありますか? .

どなたかご教示ください(英語で)。

どのように解決するのですか?

その ProGitの本 があります。 非常に良い説明 :

ブランチの追跡

リモートブランチからローカルブランチをチェックアウトすると、自動的にトラッキングブランチと呼ばれるものが作成されます。トラッキングブランチは、リモートブランチと直接関係のあるローカルブランチです。トラッキングブランチにいるときに git push Git は、どのサーバーとブランチにプッシュすればよいかを自動的に判断します。また git pull を実行すると、すべてのリモート参照が取得され、対応するリモートブランチに自動的にマージされます。

リポジトリをクローンすると、一般的には自動的に origin/master を追跡する master ブランチが作成されます。そのため git pushgit pull は、他の引数なしでそのまま動作します。しかし、必要なら他の追跡ブランチを設定することもできます。オリジンのブランチを追跡せず、master ブランチも追跡しないようなブランチです。単純な例としては、先ほど見たように git checkout -b [branch] [remotename]/[branch] . Git バージョン 1.6.2 以降では --track という略記があります。

$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "serverfix"

リモートブランチと異なる名前のローカルブランチを設定するには、最初のバージョンを別のローカルブランチ名で簡単に使用することができます。

$ git checkout -b sf origin/serverfix
Branch sf set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "sf"

さて、あなたのローカルブランチ sf に自動的にプッシュし、そこからプルします。 origin/serverfix .

BONUS:おまけ git status インフォ

トラッキングブランチ付き git status は、追跡中のブランチからどれくらい遅れているのかを教えてくれます。まだ変更をプッシュしていないことを忘れないようにするために便利です! これは、次のようなものです。

$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

または

$ git status
On branch dev
Your branch and 'origin/dev' have diverged,
and have 3 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)