[解決済み】git checkout --track origin/branch と git checkout -b branch origin/branch の違い。
質問
リモートブランチの切り替えと追跡を行うためのこの2つのコマンドの違いを知っている人はいますか?
git checkout -b branch origin/branch
git checkout --track origin/branch
どちらもリモートブランチを記録しているので、オリジンのブランチに変更をプッシュすることができますよね?
実用上の違いはありますか?
どのように解決するのですか?
2つのコマンドは同じ効果を持ちます ( Robert Siemerの回答による指摘に感謝します。 ).
という名前のローカルブランチを使用する場合に、実用的な違いが生じます。 別に :
-
git checkout -b mybranch origin/abranch
を作成します。mybranch
と追跡origin/abranch
-
git checkout --track origin/abranch
が作成されるだけで、'abranch
'であり、異なる名前のブランチではありません。
(つまり
コメント通り
によって
セバスチャン・グラーフ
ローカルブランチが
ない
がすでに存在している。
もし、そうであれば
git checkout -B abranch origin/abranch
)
注:Git 2.23 (Q3 2019)では、その場合は
新コマンド
git switch
:
git switch -c <branch> --track <remote>/<branch>
ブランチが複数のリモートに存在し、そのうちのひとつのリモートの名前が
checkout.defaultRemote
設定変数があっても、曖昧さ回避のためにそちらを使用します。<branch>
はすべてのリモートで一意ではありません。
などに設定します。checkout.defaultRemote=origin
の場合、常にそこからリモートブランチをチェックアウトします。<branch>
はあいまいですが、'origin' リモートに存在します。
ここで、'
-c
' は、新しい '
-b
'.
まず、背景を説明します。 トラッキング とは、ローカルブランチの上流がリモートブランチに設定されていることを意味します。
# git config branch.<branch-name>.remote origin
# git config branch.<branch-name>.merge refs/heads/branch
git checkout -b branch origin/branch
となります。
-
クリエート/リセット
branch
で参照されるポイントにorigin/branch
. -
ブランチの作成
branch
(を使用)。git branch
) と、リモート追跡ブランチの追跡origin/branch
.
リモート追跡ブランチからローカルブランチを開始する場合、Git はブランチ(具体的には
branch.<name>.remote
とbranch.<name>.merge
コンフィギュレーション・エントリ) ということでgit pull
は、リモート追跡ブランチから適切にマージされます。
この動作は、グローバルなbranch.autosetupmerge
設定フラグです。この設定をオーバーライドするには--track
と--no-track
オプションで指定し、後で git ブランチを使用して変更しました。--set-upstream-to
.
そして
git checkout --track origin/branch
と同じことをします。
git branch --set-upstream-to
):
# or, since 1.7.0
git branch --set-upstream upstream/branch branch
# or, since 1.8.0 (October 2012)
git branch --set-upstream-to upstream/branch branch
# the short version remains the same:
git branch -u upstream/branch branch
また、アップストリームを '
branch
'.
(注意:git1.8.0では
git branch --set-upstream
に置き換え、さらに
git branch -u|--set-upstream-to
: 参照
git1.8.0-rc1 発表
)
ローカルブランチに上流ブランチが登録されることで
-
gitに伝える
で2つのブランチの関係を表示します。
git status
とgit branch -v
. -
ディレクション
git pull
引数なし 新しいブランチがチェックアウトされたときに、上流からプルするために .
"をご覧ください。 既存の git ブランチをリモートブランチに追従させるには? 詳しくは、" をご覧ください。
関連
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git でブランチからコミットを削除する
-
[解決済み] git rebase の取り消し
-
[解決済み] Git フェッチ リモートブランチ
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】既存のGitブランチをリモートブランチに追従させる?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Githubの認証に失敗した - ... GitHubはシェルアクセスを提供しない
-
[解決済み] git rebase fatal: 必要なリビジョンは1つです。
-
[解決済み】GitHubで空のブランチを作成する
-
[解決済み] GitHubに空のブランチを作成する
-
[解決済み] GitのFETCH_HEADとはどういう意味ですか?
-
[解決済み] gitのコミットとタグを同時にプッシュ
-
[解決済み】既存のGitブランチをリモートブランチに追従させる?
-
[解決済み】'-set-upstream'は何をするのですか?
-
[解決済み】すべてのリモートgitブランチをローカルブランチとして追跡する
-
[解決済み] なぜ新しいブランチを明示的にプッシュする必要があるのですか?