Странное поведение с git fetch - PullRequest
9 голосов
/ 23 февраля 2011

У меня большая проблема с GIT fetch ... посмотрите вот это

$ git fetch
From server:project
   422b4cb..a04c062  master     -> origin/master

$ git show-ref
ba113be885e66a5306d1646cd3db0801170c04f8 refs/heads/alpha-release
a04c062261beeb4a951337ebb58745945cac3562 refs/heads/master
a04c062261beeb4a951337ebb58745945cac3562 refs/heads/test
a04c062261beeb4a951337ebb58745945cac3562 refs/remotes/origin/HEAD
ba113be885e66a5306d1646cd3db0801170c04f8 refs/remotes/origin/alpha-release
a04c062261beeb4a951337ebb58745945cac3562 refs/remotes/origin/master

И еще git fetch:

$ git fetch
From server:project
 + a04c062...422b4cb HEAD       -> origin/HEAD  (forced update)

$ git show-ref
ba113be885e66a5306d1646cd3db0801170c04f8 refs/heads/alpha-release
a04c062261beeb4a951337ebb58745945cac3562 refs/heads/master
a04c062261beeb4a951337ebb58745945cac3562 refs/heads/test
422b4cbac3db2784c8f6e94ffd99c7afcda9122d refs/remotes/origin/HEAD
ba113be885e66a5306d1646cd3db0801170c04f8 refs/remotes/origin/alpha-release
422b4cbac3db2784c8f6e94ffd99c7afcda9122d refs/remotes/origin/master

И еще ... ... 1008*

$ git fetch
From server:project
   422b4cb..a04c062  master     -> origin/master

$ git show-ref
ba113be885e66a5306d1646cd3db0801170c04f8 refs/heads/alpha-release
a04c062261beeb4a951337ebb58745945cac3562 refs/heads/master
a04c062261beeb4a951337ebb58745945cac3562 refs/heads/test
a04c062261beeb4a951337ebb58745945cac3562 refs/remotes/origin/HEAD
ba113be885e66a5306d1646cd3db0801170c04f8 refs/remotes/origin/alpha-release
a04c062261beeb4a951337ebb58745945cac3562 refs/remotes/origin/master

И еще git fetch:

$ git fetch
From server:project
 + a04c062...422b4cb HEAD       -> origin/HEAD  (forced update)

$ git show-ref
ba113be885e66a5306d1646cd3db0801170c04f8 refs/heads/alpha-release
a04c062261beeb4a951337ebb58745945cac3562 refs/heads/master
a04c062261beeb4a951337ebb58745945cac3562 refs/heads/test
422b4cbac3db2784c8f6e94ffd99c7afcda9122d refs/remotes/origin/HEAD
ba113be885e66a5306d1646cd3db0801170c04f8 refs/remotes/origin/alpha-release
422b4cbac3db2784c8f6e94ffd99c7afcda9122d refs/remotes/origin/master

Мои refs/remotes/origin/HEAD и refs/remotes/origin/master всегда принудительно обновляют до 422b4cb ...

Что случилось?422b4cb ... это старый коммит.

Ответы [ 3 ]

12 голосов
/ 23 февраля 2011

Ух ты ... после большого боя с GIT я исправил эту проблему, используя:

<code>git push origin :HEAD
4 голосов
/ 23 февраля 2011

Единственный другой случай, когда я видел такое поведение, было в этой теме :

Похоже, у вас есть локальная ветвь 'HEAD' ( не специальная ссылка HEAD) на удаленной стороне, и это все портит.

ls-remote 'в хранилище отображается' refs/heads/HEAD ', верно (есть также HEAD, это требуемый специальныйref)?

Может быть, фиксация 422b4cb была, когда появилась эта ветвь с именем 'HEAD'?

Примечание (7 лет спустя): с Git 2.16 (Q1 2018), вы все равно не сможете создать ветку с именем HEAD .

1 голос
/ 23 июля 2011

Я не уверен, что вызывает эту проблему, но вы можете исправить ее, если у вас есть доступ к оболочке git-репозитория:

$ [ ... log into shell on git server ...]
$ cd /path/to/repo.git
$ rm refs/heads/HEAD

Это так же, как

$ git push origin :HEAD

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

...