Подтвердить что ты не робот

Git: фатальный: не удается переключить ветвь на не-commit '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':
...

Может ли кто-нибудь предложить, как это исправить? Что пошло не так?

4b9b3361

Ответ 1

Git запутан, потому что 12382 выглядит как хеш фиксации. Используйте полное имя для проверки ветки:

git checkout refs/heads/12382 --

или, если это удаленная ветка:

git checkout refs/remotes/origin/12382 --

Ответ 2

@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

Ответ 3

Вопрос - это край, и он уже ответил.

Я отвечу на ошибку на более общем уровне:


Чтобы иметь возможность переключать/проверять что-то в своем исходном дереве, он должен иметь тип:

  • commit: git checkout: 90392aeda17d730d472493bc5a36237407c80979 или, возможно, просто выполните первые 7 цифр `` git checkout: 90392ae`
  • тег git checkout V2.0.3 ветвь
  • (удаленные ветки тоже) git checkout newLogin
  • HEAD git checkout HEAD^1
  • Хеш, короткий хэш.

Итак, если вы переключаетесь на то, что не является ни одним из них, например, вы ошибочно указали название своей ветки, git предоставит вам эту ошибку.

Невозможно переключить ветку на не-фиксацию означает, что вы пытаетесь выполнить проверку на то, что не является tree-ish