web-dev-qa-db-ja.com

git:fatal:ブランチを非コミット '12382'に切り替えることができません

私のチームの他の誰かが新しいgitブランチを作成し、コミットして、作業している通常のリモートにプッシュしました。このブランチをチェックアウトしようとすると、次のようになります。

% git checkout 12382
fatal: Cannot switch branch to a non-commit '12382'

このリポジトリから他のブランチをチェックアウトしても問題はありませんでした。この直後に別のもの(私がローカルコピーを持っていなかったもの)をチェックしてみましたが、それはうまくいきました。

Goパイプラインでこのブランチを使用してサーバーを構築してみましたが、うまくいきました。つまり、サーバーはそのブランチのチェックアウトに成功しました。

物事のステータスを確認するためにこれを試してみました:

% git remote show Origin
* remote Origin
  Fetch URL: [email protected]:mycompany/myrepository.git
  Push  URL: [email protected]:mycompany/myrepository.git
  HEAD branch: stage
  Remote branches:
    10112                     tracked
    10198                     tracked
    10678                     tracked
...
    12382                     tracked    <<<---
...
  Local branches configured for 'git pull':
...
  Local refs configured for 'git Push':
...

誰かがこれを修正する方法を提案できますか?何が悪かったのか?

19
zaphodb

12382はコミットハッシュのように見えるため、Gitは混乱しています。完全修飾名を使用してブランチをチェックアウトします。

git checkout refs/heads/12382 --

または、それがリモートブランチの場合:

git checkout refs/remotes/Origin/12382 --
20
knittl

@knittl:うまくいったおかげで、次の追加手順を実行する必要がありました:

% git checkout refs/remotes/Origin/12382
Note: checking out 'refs/remotes/Origin/12382'.

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 2d834e4... 

% git branch | grep 12382
* (detached from Origin/12382)

% git checkout -b 12382
Switched to a new branch '12382'

% git status
On branch 12382
nothing to commit, working directory clean

% git Push --set-upstream Origin 12382
Branch 12382 set up to track remote branch 12382 from Origin.
Everything up-to-date
10
zaphodb

質問はEdgeケースであり、すでに回答済みです。

より一般的なレベルでエラーに答えます:


ソースツリーの何かに切り替え/チェックアウトできるようにするには、次のタイプでなければなりません:

  • コミット:git checkout: 90392aeda17d730d472493bc5a36237407c80979または、おそらく最初の7桁を実行する `` git checkout:90392ae`
  • 鬼ごっこ git checkout V2.0.3
  • ブランチ(リモートブランチも)git checkout newLogin
  • git checkout HEAD^1
  • ハッシュ、ショートハッシュ。

したがって、ブランチ名を誤って入力したなど、それらのいずれでもないものに切り替える場合、gitはこのエラーを表示します。

ブランチを非コミットに切り替えられないは、チェックアウトしようとしていないことを意味します tree-ish

0
Honey