私のチームの他の誰かが新しい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':
...
誰かがこれを修正する方法を提案できますか?何が悪かったのか?
12382
はコミットハッシュのように見えるため、Gitは混乱しています。完全修飾名を使用してブランチをチェックアウトします。
git checkout refs/heads/12382 --
または、それがリモートブランチの場合:
git checkout refs/remotes/Origin/12382 --
@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
質問はEdgeケースであり、すでに回答済みです。
より一般的なレベルでエラーに答えます:
ソースツリーの何かに切り替え/チェックアウトできるようにするには、次のタイプでなければなりません:
git checkout: 90392aeda17d730d472493bc5a36237407c80979
または、おそらく最初の7桁を実行する `` git checkout:90392ae`git checkout V2.0.3
git checkout newLogin
git checkout HEAD^1
したがって、ブランチ名を誤って入力したなど、それらのいずれでもないものに切り替える場合、gitはこのエラーを表示します。
ブランチを非コミットに切り替えられないは、チェックアウトしようとしていないことを意味します tree-ish