3

私は Git の学習を始めたばかりで、私が使用しているチュートリアルでは、リモート リポジトリのクローンを作成する場合、リモート ブランチへの切り替えは絶対にダメだと書かれています。つまり、ブランチ名を持つリポジトリのクローンを作成し、それでbranch1作業したい場合は、使用する必要があります

git checkout --track -b branch1 origin/branch1

それを追跡します。しかし、私が使用しようとしたとき

git checkout branch1

Git が返信しました

Branch branch1 set up to track remote branch branch1 from origin.
Switched to a new branch 'branch1'

したがって、私の常識では、そのチュートリアルが書かれて以来、Git の開発者はその落とし穴を修正し、誰かがリモート ブランチに切り替えようとすると、Git が自動的に正しい方法でそれを行い、それを追跡するローカル ブランチを作成するようにしました。ただし、リリース ノートや Google 検索で、この変更に関する参照が見つかりません。

それで、彼らはそれを修正しましたか?これらのリモートブランチをチェックアウトするだけで安全ですか? それとも、そのチュートリアルの警告を誤解していて、注意すべき別の落とし穴について言及していたのでしょうか?

4

2 に答える 2

5

リモートブランチをチェックアウトしていません。

チェックアウトbranch1は、「リモートブランチ」をチェックアウトすることと同じではありません。次のコマンドは、存在しないローカルブランチをチェックアウトしようとします。

git checkout branch1

次のコマンドは、リモートブランチが指すコミットをチェックアウトします。

git checkout origin/branch1

その結果、ヘッドが外れ、チュートリアルで警告されていた落とし穴が発生する可能性があります。

Gitは自動的にローカルブランチを作成し、ローカルには存在しないがリモートに同じ名前のブランチがあるブランチをチェックアウトしようとすると、同じ名前のリモートを追跡するように設定します。

于 2011-10-19T01:21:49.753 に答える
1

からDocumentation/RelNotes/1.6.6.txt:

  • ローカル ブランチ「frotz」がなく、リモート トラッキング ブランチが 1 つしかない場合の「git checkout frotz」は、対応するリモート トラッキング ブランチで名前付きブランチを開始する要求と見なされます。

そうです、Git 開発者はプロセスを少し単純化し--track -bました。ローカルのリモート追跡ブランチを作成するために指定する必要がなくなりました。IIRC では、この変更の前に、Git はローカル ブランチ "frotz" の欠落について不平を言っていました。

meagar が言うように、git checkout origin/branch1構文を使用してリモート ブランチをチェックアウトすることは引き続き可能です。見回すだけの場合はこれを行っても問題ありませんが、それらに永続的な変更を加えることは想定されていません。リモート ブランチをチェックアウトするときに Git が出力する警告を次に示します。

$ git checkout origin/master
Note: checking out 'origin/master'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at a48aafd... Merge branch 'maint'
于 2011-10-19T01:28:38.920 に答える