web-dev-qa-db-ja.com

「git checkout Origin / <branch>」を実行した後、Gitが「現在どのブランチにもありません」と表示するのはなぜですか?

Git: "現在どのブランチにもありません。"変更を保持しながらブランチに戻る簡単な方法はありますか? but git checkout壊れているように見える:

$ git checkout Origin/web-zach
HEAD is now at 1366cb1... Changed so css files not ignored

$ git status
# Not currently on any branch.
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .cordova/config.xml
#       www/languages/pt/sounds/
nothing added to commit but untracked files present (use "git add" to track)

より具体的には、「現在どのブランチにもありません」というメッセージが心配です。 git checkoutは、ここでは何もしないようです...そのコマンドの全体的な目的は、私をブランチに置くことではないでしょうか?ブランチに戻ってコミット/プッシュを再度行うにはどうすればよいですか?

18
hubatish

git statusの出力は、作業ディレクトリがクリーンであることを示しています。良い。

今、実行して

git checkout Origin/web-zach

Origin/web-zachと呼ばれるremote-trackingブランチをチェックアウトしようとしています。 Originと呼ばれるリモートリポジトリにある対応するブランチweb-zachを追跡するのは、リポジトリにローカルな特別なタイプのブランチです。

ただし、HEAD参照(マップ上のYou-are-hereマーカーと考えることができます)cannotリモート追跡ブランチを指します; 「通常の」ローカルブランチのみ、または直接コミットのみ。リモート追跡ブランチをチェックアウトしようとすると、HEAD参照は、リモート追跡ブランチのtip直接を指すようになりますそのリモート追跡ブランチが指すコミット):

enter image description here

HEADが「通常の」ローカルブランチを指していないが、コミット直接を指している場合、いわゆる「切り離されたHEAD状態」になります。それは世界の終わりではありませんが、可能な限りその状態での着陸を避けることは(少なくともGitの学習の開始時に)おそらく驚きを免れるでしょう。

状況を改善するには、HEADをいくつかのlocalブランチに再接続する必要があります。ここでは、たとえば-を実行して、localブランチを作成およびチェックアウトできます。

git checkout -b web-zach

HEADは、web-zachと呼ばれる新しく作成されたローカルブランチを指します:

enter image description here

次に、あなたは得る必要があります

$ git status
On branch web-zach
Untracked files:
  (use "git add <file>..." to include in what will be committed)
      .cordova/config.xml
      www/languages/pt/sounds/
nothing added to commit but untracked files present (use "git add" to track)

その後、自由に変更を加え、ステージングし、コミットします(Originに対応するリモートリポジトリへの書き込みアクセス権があり、他の誰もOrigin/web-zachにプッシュしていない場合最後のgit fetch)、プッシュ、使用

git Push -u Origin web-zach
42
jub0bs