Как извлечь несколько последних коммитов в ветку и сбросить до некоторой предыдущей фиксации? - PullRequest
1 голос
/ 08 июля 2020

Я облажался с несколькими коммитами подряд.

Я хочу сделать следующее:

  1. Извлечь последние несколько коммитов в указанную c ветку
  2. Вернуть мастер к нормальной фиксации
  3. Тщательно исправить изменения в этой ветке (p1) и постоянно добавлять их обратно в мастер.

Устранит ли это проблему, и если да, как реализовать этот план?

1 Ответ

2 голосов
/ 08 июля 2020

Ваше репо выглядит так.

A - B - C - D [master]

Допустим, C и D - это коммиты, которые вам не нужны на главном сервере.

Сначала создайте новую ветку на та же фиксация, что и у мастера.

$ git branch feature

A - B - C - D [master]
              [feature]

Затем переместите мастер обратно в B с помощью git reset.

$ git reset --hard B

A - B [master]
     \ 
      C - D [feature]

Теперь вы можете проверить функцию и поработать над ней.

Что, если бы вы вместо этого не сбросили настройки, а вернулись обратно? В отличие от reset, который перемещает метку ветки, revert делает новые коммиты.

Мы начинаем как раньше.

A - B - C - D [master]

И, как и раньше, мы создаем новую ветку, чтобы запомнить коммиты, с которыми мы хотим работать on.

$ git branch feature

A - B - C - D [master]
              [feature]

Вместо того, чтобы перемещать мастер, чтобы он больше не содержал оскорбительных коммитов, мы используем revert, чтобы добавить новый коммит в мастер, который отменяет C и D.

$ git revert C D

A - B - C - D [feature]
             \
              ^D - ^C [master]

Содержимое мастера будет таким же, как у фиксации B, но история будет более беспорядочной. Обычно вы не хотите сохранять артефакты процесса разработки, такие как возвраты и простые исправления опечаток, они бесполезны для будущих разработчиков и затрудняют понимание истории.

Из-за этого я рекомендую оставляя откат для глубоко скрытых коммитов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...