Можно ли набрать sh отдельную головку в git в качестве стратегии отката? - PullRequest
0 голосов
/ 12 февраля 2020

Мы изучаем потенциальную стратегию отката для мастера, и мне интересно, возможно ли это?

Допустим, на кончике мастера и разработки есть ошибка

dev 
A -- B -- C -- D -- BUG 
                     |
                   HEAD
master 
A -- B -- C -- D -- BUG 
                     |
                   HEAD

Я бы хотел бы изменить голову мастера обратно на коммит, но сохранить историю git (это откат, так как у мастера больше не будет ошибки)

dev 
A -- B -- C -- D -- BUG 
                     |
                   HEAD
master 
A -- B -- C -- D -- BUG 
               |
              HEAD

Затем мы исправим изменение на dev

dev 
A -- B -- C -- D -- BUG -- FIX
                            |
                           HEAD
master 
A -- B -- C -- D -- BUG 
               |
              HEAD

и затем мы выполняем ускоренную перемотку вперед git, чтобы получить исправление для мастера и ГОЛОВУ назад в правильное место:

dev 
A -- B -- C -- D -- BUG -- FIX
                            |
                           HEAD
master 
A -- B -- C -- D -- BUG -- FIX
                            |
                           HEAD

Мне интересно, возможно ли отсоединить голова на мастера и сохранить историю, как я описываю и если да, то как это сделать?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Если я правильно понимаю, есть несколько способов сделать это:

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

  2. Взгляните на более раннюю ссылку (commit ha sh) и перейдите туда как запись истории.

1 голос
/ 12 февраля 2020

хотя я думаю, что ответ Ишервуда верен, вот еще один совет, если вы хотите избежать отката истории с принудительным пу sh:

  • отменить фиксацию ошибки в master (так что теперь у мастера больше нет ошибки)

    git revert HEAD~1
    
  • ответвляются от вашей ветки развертки от нового мастера и возвращают реверсию

    git checkout -b fix-bug
    git revert HEAD~1
    
  • исправить ошибку в fix-bug ветви

  • объединить ее обратно в master (или перемотка вперед, в зависимости от ваших потребностей):

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