質問

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検索でこの変更に関する言及は見つかりません。

それで、彼らはそれを修正しましたか?これらのリモートブランチを単純にチェックアウトしても安全ですか?あるいは、そのチュートリアルで警告を誤解していたのかもしれませんが、それは私が気をつけなければならない別の落とし穴に言及していましたか?

役に立ちましたか?

解決

君は そうではありません リモートブランチをチェックアウトします。

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

git checkout branch1

次のコマンドは、リモートブランチによって指摘されたコミットをチェックアウトします。

git checkout origin/branch1

その結果、 戸建ヘッド, 、おそらくチュートリアルが警告していた落とし穴です。

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

他のヒント

から Documentation/RelNotes/1.6.6.txt:

  • 「Git Checkout Frotz」は、ローカルブランチ「Frotz」がない場合、「Frotz」というリモートトラッキングブランチが1つだけある場合は、対応するリモートトラッキングブランチで名前付きブランチを起動するリクエストとして使用されます。

はい、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'
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top