git - дубликат родителя - PullRequest
       8

git - дубликат родителя

2 голосов
/ 20 сентября 2011

Мне, кажется, удалось сделать коммит с двумя дублирующимися родителями, использующими eGit (git-клиент Eclipse, работает на JGit).

SS

Второй родитель вызывает зеленый 'переход в никуда », от которого мы не можем избавиться.

Я пытался найти способ выполнить операцию по удалению дополнительного родителя, но безрезультатно.

Запускcat-файл, который я получаю:

$ git cat-file -p 26dc6a5b44373f766d81513ab84c5eecaf876736

tree 527df208ee66f52bc414948b1de0fa6607cfb81c
parent bc9d55d0451b325b4ad5a758be8b30c1418b3af9
parent bc9d55d0451b325b4ad5a758be8b30c1418b3af9
author Roy Truelove <roy.truelove@xxxx.com> 1316457571 -0400
committer Roy Truelove <roy.truelove@xxxx.com> 1316457571 -0400

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

Спасибо git hackers, Рой

PS - у меня есть доступ из командной строки к этому хранилищу (cygwin), если мне нужно выполнить функцию, недоступную через eGit

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Вы можете использовать git filter-branch, чтобы переписать историю; дубликат родителя будет автоматически исправлен.

1 голос
/ 21 сентября 2011

Чтобы удалить дубликата родителя из коммита, вы можете сделать это:

git replace <sha1> $(git cat-file commit <sha1> | uniq | git hash-object -t commit -w --stdin)

Коммит с дубликатом родителя был временно заменен новым коммитом, который не содержит дубликат родителя.Вы можете проверить, исчезла ли проблема с отображением gitk.

Чтобы навсегда заменить коммит, вы можете использовать git filter-branch.Обратите внимание, что в этот момент у вас будет переписана история.Все разработчики, работающие над этим проектом, должны быть осведомлены об этом, чтобы они также могли перебазировать / сбросить свои локальные работы / копии в новую историю.

...