ГИТ: фатальная ошибка: не можете переключить ветки, чтобы не совершать 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':
...


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

3 ответов:

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

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

Вопрос является крайним случаем, и на него уже дан ответ.

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


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

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

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

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

Comments

    Ничего не найдено.