Как я могу сделать ребаз после слияния? - PullRequest
1 голос
/ 24 сентября 2019

Я читаю книгу Pro Git и застреваю при перебазировании.

Ниже приведен сценарий: enter image description here

, поэтому две ветви уже объединены.Затем в книге говорится, что после того, как мы осуществим слияние, мы все еще можем передумать, чтобы перебазировать С4 в С5 следующим образом: enter image description here

Но я попытался повторить перебазирование и обнаружил, что послеобъединение выполнено, я не могу перебазировать больше, если я попытаюсь:

git checkout branch_on_c4

git rebase branch_on_c5

У меня нет нового коммита C4', и сообщение:

Сначала, перематывая голову, чтобы воспроизвести вашу работу поверх нее

Применение: добавить

Использование информации индекса для восстановлениябазовое дерево

Откат к исправлению базы и трехстороннему объединению

Без изменений - исправление уже применено **

Если я не объединил две ветвиВо-первых, у меня нет проблем с перебазированием С4 на С5.Но после слияния я больше не могу перебазировать, так как же автор или какую команду использует автор, чтобы выполнить перебазирование после слияния?

Ответы [ 2 ]

3 голосов
/ 24 сентября 2019

tl; др

Как я могу сделать ребаз после слияния?

Вам не нужно, а это не такчто сказано в книгеПросто выбросьте слияние, если оно вам не понравилось, и перебазируйте вместо .


Тогда в книге сказано, что после слияния мы все еще можем изменить свое мнениеперебазировать

Нет, это не так.

Это говорит

... если вместо слияниякогда [ это происходит ], мы запускаем git rebase teamone/master ...

То есть вместо слияния, а не после .

Итак, вам нужно либо запустить fetch и заранее определить потенциальную проблему, либо запустить обычное слияние pull, решить, что это беспорядок, и выбросить его, чтобы начать снова:

git reset --hard HEAD@{1}

(Я стараюсь избегать синтаксиса HEAD~1 для слияний, потому что я не хочу думать о том, какой родитель какой - синтаксис reflog для «предыдущего значения HEAD» проще IMO).

2 голосов
/ 24 сентября 2019

Я предполагаю, что вы ссылаетесь на рис. 45 и рис. 46 здесь: Git Branching Rebasing

Далее, человек, который выдвинул объединенную работу , решаетвернуться и вместо этого переоценить их работу;они делают git push --force, чтобы перезаписать историю на сервере.Затем вы получаете данные с этого сервера, вызывая новые коммиты.

Этот человек, скорее всего, сделал что-то, чтобы отменить слияние, например:

git reset --hard HEAD~1

Тогда было возможновыполнить rebase и push --force .

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