2017-08-22 13 views
1

私はここで何が起こっているgit checkout bugfix/NTP-183-datefnsgit checkoutの差分チェックアウト元/ <branch-name>とgit checkout <branch-name>?

Switched to branch 'bugfix/NTP-183-datefns' 
Your branch is up-to-date with 'origin/bugfix/NTP-183-datefns'. 

をしようとしたとき、私はしかしgit checkout origin/bugfix/NTP-183-datefns Gitは

Note: checking out 'origin/bugfix/NTP-183-datefns'. 

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 6fd089d. 

示し行うと?

+0

私はこの質問をよく理解していません。 「ここで何が起こっているのですか?」というのは、あなたが既に投稿したテキストによってかなりよく説明されているようです。理解できない部分がある場合は、それがどの部分であるか説明してください。ちょうどfyi、あなたはリモートブランチをチェックアウトすることができません、それはあなたがそれを試みるときに分離頭部の状態で終わった理由です。 –

答えて

1

origin/<branch-name>は、リモートブランチリファレンスです。変更することはできません。
この参照をチェックアウトすると、gitはこのブランチに移動することはできませんが、ブランチが参照するコミットに移動します。次にデタッチされたHEAD状態にあります。つまり、ブランチにはなく、直接コミットしていることを意味します(その意味は、コマンドの出力で説明されています)。

<branch-name>は、単にローカルブランチであるため、作業することができます。
この参照をチェックアウトすると、gitはあなたをブランチに移動させます。

ローカルブランチ<branch-name>が存在しないが、すべてのリモートに同じ名前のリモートブランチが1つだけ存在する場合、gitは自動的にローカルブランチを作成してリモートブランチを追跡し、チェックアウトしますこの場合git checkout <branch-name>git checkout --track -b <branch-name> any_remote/<branch-name>に相当)

+0

これは 'origin'でハードコードされていますか?または、ローカルのリポジトリ内に1つのリモートのみがリンクされている場合は、これが機能しますか? – silvio

+0

いいえ、すべてのリモコンに「」という参照が1つしかない場合、gitはそれを受け取ります。 – zigarn

1

Gitにはブランチを扱う自動化機能があります。デフォルトのリモートは、originと呼ばれます。コマンドラインでリモコンを使うと、gitはブランチのないこのブランチのコミットだけをチェックアウトします。あなたはdetached HEAD stateです。テキストはここで何が起きるのか、そしてあなたのための合併症を説明します。

リポジトリ内のリモートが1つしか設定されておらず、チェックアウトしたい場合は、ローカルのブランチを自動的に作成するよりも、このリモートからブランチが来るようにしてください。

1

任意のコミット(ハッシュ)でチェックアウトすることができます。コミットには、リモートブランチによって「ポイント」されます。しかし、リモートブランチが指しているコミットをチェックアウトした場合、ローカルでは未処理のコミットを指し示すことになります。

これは警告です。便利なことをするには、地元の支部にいる必要があります。リモートブランチをチェックアウトしても、ローカルブランチが自動的に生成されるわけではありません。コミットに移るだけです。一度にあなたがやりたい:

git checkout -t -b bugfix/NTP-183-datefns origin/bugfix/NTP-183-datefns 

  • "-t" を作る。この追跡ブランチ(これはオプションいいです)
  • 「-bバグ修正/ NTP- 183-datefns "は、bugfix/NTP-183-datefnsというローカルブランチを作成します。

これは基本的に使用すると、1つのステップで行った2つのステップをやっているので、(-tオプションなし)と同等です:

git checkout origin/bugfix/NTP-183-datefns 
git branch bugfix/NTP-183-datefns 
git checkout bugfix/NTP-183-datefns 

と同じである:

git checkout origin/bugfix/NTP-183-datefns 
git checkout -b bugfix/NTP-183-datefns 
関連する問題