Как вернуться обратно в ветку до слияния и сохранить изменения, сделанные после слияния - PullRequest
0 голосов
/ 16 ноября 2018

Проблема:

У меня есть ветви A, B. B был объединен с A, и после этого были внесены изменения в A. Я хочу вернуться к A до слияния с B и сохранить изменения, которые были сделаны после слияния.

1 Ответ

0 голосов
/ 16 ноября 2018

Если я понимаю, ваш репозиторий выглядит так.

1 - 2 --------- 7 - 8 [A]
     \         /
      4 - 5 - 6 [B]

B разветвился A на коммите 2. Зафиксированы 4, 5 и 6. Затем слились с A на 7. Затем был сделан еще один коммит 8 на A.

Если вы не удалили B, он все еще там. Если вы это сделали, вам нужно найти исходный коммит и восстановить метку ветки. Вы можете сделать это с git log --graph --decorate --oneline A. Вы увидите что-то вроде ...

* (A) 4f8cea2 Some commit
* 9a7fd82 Merge B into A
|\  
| * c772b6d some commit on B
| * c9178a2 another commit on B
| * d7a579d a commit on B
|/
* b4d1b73 The commit before B

В этом случае c772b6d является последним коммитом на B.

git branch B c772b6d

Это восстановит Б.


Чтобы восстановить A, выполните интерактивную перебазировку назад для фиксации 2. Снова, используйте git log, чтобы найти эту фиксацию. В нашем примере это b4d1b73. Так что оформите А и вернитесь обратно туда.

git checkout A
git rebase -i b4d1b73

Вы получите такой редактор:

pick 4f8cea2 Some commit
pick c772b6d some commit on B
pick c9178a2 another commit on B
pick d7a579d a commit on B

Это все коммиты между A и b4d1b73, но коммитов слияния нет. Перебазировка сгладит A. Теперь удалите коммиты из B, оставив только коммиты на A.

pick 4f8cea2 Some commit

Затем save и Git запишут только оставшиеся коммиты поверх b4d1b73. У тебя будет ...

1 - 2 - 8' [A]
     \         
      4 - 5 - 6 [B]

Если у вас возникнут проблемы с перебазированием, на оригинальную версию A указывает ORIG_HEAD. Вы можете восстановить его с помощью git reset --hard ORIG_HEAD.

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