refname неоднозначен, и тянуть не удается - PullRequest
8 голосов
/ 21 декабря 2011

Я выполнил следующую команду, так как хотел переместить производственную ветвь назад без предварительной проверки:

git branch -f production HEAD~1

При получении заказа я получаю следующее предупреждение:

warning: refname 'production' is ambiguous.

Затем я запускаю:

git pull

И я получаю следующую ошибку:

First, rewinding head to replay your work on top of it...
Fast-forwarded production to 7463e01c536ad52746b8879ef3d70ffd5a8db31e.
error: Ref refs/heads/production is at 252038dfa22caba8a816a68dcb005c625e44c51f but expected ae5b621609c1b5b430e3d30711157298f842942a
fatal: Cannot lock the ref 'refs/heads/production'
Could not move back to refs/heads/production

Хотя я могу потянуть за другие ветви. Как я могу это исправить?

Дополнительная информация

git tag не возвращает никакого вывода. Раньше у меня был производственный репозиторий, но теперь я переименовал его в live

> ~/repo (chris-membership-fees)$ git show-ref | grep production
88e0c37c9ae4ff6967ddd027b62b62fa2c0ac272 refs/heads/production
9d739cff44a898f0c68da33fb22a230985e479ce refs/remotes/backup/production

~/repo (chris-membership-fees)$ git branch -a | grep production
  production
  remotes/backup/production

Вход

Я пометил первую ревизию как a, а вторую как b (обратите внимание, что номера ревизий изменились, поскольку производство теперь отличается). Это бревно, упрощенное декорированием

* commit 7463e01c536ad52746b8879ef3d70ffd5a8db31e (**tag: a**, backup/live-master, production, live-master)
| 
| Date:   Wed Dec 28 11:47:49 2011 +1100
| 
|     Merge remote-tracking branch 'origin/joseph-quick-fix'
|  
* commit f35f0259c4e36d46dd1df71b3293bef6105cef98 (origin/hotfix-googleplusdirectconnect)
| 
| Date:   Fri Dec 23 12:25:27 2011 +1100
| 
|     Add google plus link tag to home page for direct connect
|    
*   commit 8b3a30ef2909439ac18b65ebbb316eb0cdd2d61c
|\  Merge: f696f3e 88e0c37
| | 
| | Date:   Wed Dec 21 14:28:45 2011 +1100
| | 
| |     Merge branch 'master' into chris-hotfix
| |   
* | commit f696f3e2b8f4a19ec2b2c2a3638c68e7a52836e3 (origin/chris-hotfix, backup/chris-hotfix, chris-hotfix)
| | 
| | Date:   Wed Dec 21 11:56:10 2011 +1100
| | 
| |     Fixed buyer price info
| |     
| *   commit 88e0c37c9ae4ff6967ddd027b62b62fa2c0ac272
| |\  Merge: c9655da ae5b621
| |/  
|/|   Date:   Wed Dec 21 11:53:36 2011 +1100
| |   
| |       Merge branch 'master' of git.freelancer.com:production into production
| |   
* | commit ae5b621609c1b5b430e3d30711157298f842942a (HEAD, **tag: b**)
| | 
| | Date:   Wed Dec 21 10:51:47 2011 +1100
| | 
| |     Merge branch 'master' of git.freelancer.com:production
| |   
| * commit c9655da9c1627ab53720ae818affdd1e6f14119f (origin/game-shadow2)
| | 
| | Date:   Tue Dec 20 18:41:57 2011 -0500
| | 
| |     * Removed debugging code
| |     
| *   commit ca88d33538bd3b99ea7c186b5b531e611847989d
| |\  Merge: 99e983a c397a8b
| |/  
|/|   Date:   Tue Dec 20 17:25:24 2011 -0500
| |   
| |       Merge remote-tracking branch 'production/master' into shadow2

Ответы [ 3 ]

6 голосов
/ 01 января 2012
> ~/repo (chris-membership-fees)$ git show-ref | grep production
88e0c37c9ae4ff6967ddd027b62b62fa2c0ac272 refs/heads/production
9d739cff44a898f0c68da33fb22a230985e479ce refs/remotes/backup/production
88e0c37c9ae4ff6967ddd027b62b62fa2c0ac272 refs/remotes/production/master

refs/heads/production является неоднозначным из-за refs/remotes/production. Разрешение является общим и не зависит от префикса ссылочного типа, поэтому ветви, теги, удаленные и даже пользовательские имена ссылок не должны конфликтовать.

6 голосов
/ 04 января 2012

Спасибо Йоханнесу Сиксту из списка рассылки Git .

Наиболее вероятная причина в том, что у вас есть ссылка ref 'production' прямо в каталоге .git.Возможно, вы или один из ваших сценариев создали его случайно, используя 'git update-ref production ae5b621', т. Е. Без указания полного имени пути ref

На самом деле его не было в корневом каталоге .git,но у меня была пустая производственная папка в ветках.

6 голосов
/ 21 декабря 2011

Если вы просто хотите удалить предупреждение:

git config --global core.warnambiguousrefs false

Предупреждение приходит, потому что у вас есть филиал с именем production, а также удаленный продукт с именем production. Идеально было бы переименовать одно из двух в другое.

...