2016-03-14 5 views
3

Я добавил изображение, чтобы проиллюстрировать мой вопрос.Как я могу удалить удаление из предыдущего коммита: A Gitastrophy

В Commit C было добавлено сотни файлов. В Commit D было добавлено несколько файлов. Когда D попытался слить обратно на develop, возник конфликт слиянием. Разработчик, разрешивший конфликт, сделал это, удалив все, что было добавлено в C. После этого было добавлено несколько коммитов до того, как они были реализованы.

Теперь я пытаюсь получить дополнения от C обратно в поток. Но просто слияние C с develop не будет работать, потому что история git показывает, что файлы в C были удалены в D.

enter image description here

Я не знаю, как решить эту проблему, не прочесывая файлы в C, добавив их в новой отрасли, а также создание PR для этой отрасли (что было бы болезненным, есть сотни файлов).

Кроме того, принудительное нажатие недоступно. Мы могли бы получить их временно, но бюрократические полномочия должны были бы быть задействованы, поэтому я стараюсь избегать этого, если это возможно.

Кто-нибудь знает, как перемещаться по этой гитастрофии?

+0

, если его не слишком много коммитов после ди просто извлечь они как патчи ветви свежие из c и повторно применяют все чистое –

+1

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

ответ

0

возможно клонировать репозиторий и попробовать git cherry-pick <hash for c>

Это должно попытаться добавить все файлы, которые были добавлены в фиксации C. Это, вероятно, даст вам конфликт и ничего не совершал. Затем вы можете просмотреть конфликты и, надеюсь, выяснить, что совершить.

или если вы просто хотите, чтобы добраться туда, где вы были правы после того, как вы совершили с или d, но с несколько дополнительных фиксаций, что-то вроде этого:

git clone <url> #start with a fresh clone in case you mess it up more 
git checkout <hash for d> 
git reset master #if E is master 
git add -A 
git commit -m"get back to where we were after d"