Git: совершить коллизию и откат - PullRequest
0 голосов
/ 11 мая 2019
  1. Когда я запрашиваю журнал:

MacBook-Pro-nnuttertools: программа $ git log

Я получаю:

commit f2504e036044... (HEAD -> master, f2504e036044...)

Author: Nnuttertools <nnuttertools@gmail.com>

Date:   Mon Apr 29 00:12:00 2019 +0300

    CommitName

2. Затем я хочу сохранить состояние в тайнике и переключиться на коммит:

MacBook-Pro-nnuttertools: программа $ git stash

MacBook-Pro-nnuttertools: программа $ git checkout f2504e036044 ...

Но первая команда выдает ошибку:

warning: refname 'f2504e036044...' is ambiguous.
Git normally never creates a ref that ends with 40 hex characters
because it will be ignored when you just specify 40-hex. These refs
may be created by mistake. For example,

  git checkout -b $br $(git rev-parse ...)

where "$br" is somehow empty and a 40-hex ref is created. Please
examine these refs and maybe delete them. Turn this message off by
running "git config advice.objectNameWarning false"

И код не восстанавливается.Но старые коммиты могут сделать это.Что мне нужно использовать для разрешения коллизий?К сожалению, я не успеваю это выяснить. Основная цель сейчас - вернуть правильный код)

1 Ответ

3 голосов
/ 11 мая 2019

То, что вы сделали здесь - это создали ветку с тем же именем, что и у объекта. Git обычно предполагает, что 40-символьное шестнадцатеричное имя является идентификатором объекта, но в этом случае это также ветвь. Он сбит с толку, и поэтому он сказал вам, что то, о чем вы просили, было неоднозначным.

Самое простое решение - временно извлечь другую ветку, затем удалить ветку со странным именем, а затем проверить нужную ревизию. Так что-то вроде следующего:

$ git checkout -b temp
$ git branch -D LONG-HEX-NAME
$ git branch checkout LONG-HEX-NAME
$ git branch -D temp
...