Итак, представьте, что происходит следующее (и что мы все используем SourceTree):
- Мы все работаем от происхождения / развития.
- Я иду в отпуск на неделю.
- Мой коллега работал локально в течение последних нескольких дней без слияния происхождения / развития обратно в его местное отделение разработки.
- Он пытается сделать толчок, ему говорят, что он должен сначала слиться, а затем делает тягу.
- Он получает конфликт, останавливая автоматическую фиксацию после слияния.
- Предполагая, что Git похож на SVN, мой коллега отбрасывает «новые» файлы в своей рабочей копии, а затем фиксирует слияние - стирает эти «новые» файлы из главы происхождения / разработки.
- Недели работы разработчиков продолжаются в дополнение к этой ревизии.
- Я возвращаюсь из отпуска и узнаю, что мне не хватает нескольких дней моей работы.
Мы все новички в Git (это наш первый проект, использующий его), но я исправил это:
- Переименуйте «Develop» в «Develop_old».
- Объединить Develop_old в новую ветку "Develop_New".
- Сбросьте ветку develop_new до последнего коммита перед неудачным слиянием.
- С тех пор Cherry выбирает каждый коммит один за другим, разрешая конфликты вручную.
- Нажмите разработчик и развивай до начала координат.
Я надеюсь, что на этом этапе development_new является «хорошей» копией всех наших изменений с повторным использованием стоимости последующих недель. Я также предполагаю, что «обратный коммит» будет делать странные вещи при слиянии, особенно потому, что на нем основывается работа в течение следующих нескольких недель - и так как это слияние содержит много вещей, которые мы действительно хотим, наряду с вещами, которые мы не делаем. т.
Я надеюсь, что это никогда не повторится, но если это случится снова, я хотел бы узнать о более легком / лучшем способе исправления. Есть ли лучший способ отменить «плохое» слияние, когда в репо на основе этого слияния проделана большая работа?
git log
формата с соответствующими аннотациями о том, что происходило на различных коммитах? (Я бы отредактировал / аннотировалgit log --graph --pretty=oneline --abbrev-commit
и пошел бы оттуда)