Не может перебазировать мерзавец, слияние и геррит
Я сделал что-то действительно странное. И не знаю, что делать, знать.
Я работаю с Герритом, и он только что показал мне, что он не может слиться из-за конфликта, но был какой-то конфликт, но вместо этого я думаю, что это было из-за HEAD
И я начал делать действительно случайные вещи, во-первых, я cherry-picked
3 коммитов в один, и после этого я снова отсоединил основную ветку, которую я попытался перебазировать, но получил конфликт слияния, так что, наконец, я получил следующий журнал
Это потому, что я не понимаю разницу между merge
а также rebase
Не могли бы вы помочь мне исправить историю (в одну прямую) и ответить на вопрос:
В чем разница между merge
а также rebase
если по умолчанию используется git fast-forward
поэтому результат выглядит точно так же, как и в rebase. И в моем случае я не мог сделать ребаз из-за конфликтов слияния. Так какова цель rebase
чем?
1 ответ
Rebase отличается от слияния, потому что Git использует fast-forward
только если может. Например: вы создаете новую ветку из master
, вы обязуетесь к вашей новой ветви, вы не обязываетесь к master
, а затем вы хотите merge
ваши изменения обратно в master: git будет думать, что это так же, как если бы вы только что взяли на себя обязательство master
тем не мение. И он будет думать то же самое, если вы используете rebase
в этой ситуации.
Настоящее веселье начинается, когда у вас есть изменения в обеих ветках, а git не может использовать ускоренную перемотку вперед: тогда merge
создаст новый коммит, для которого родители будут вашими последними коммитами в обеих ваших ветках, и rebase
попытается переместить базу вашей ветви, которую вы пытаетесь перебазировать, в головку другой ветви.
Таким образом, чтобы "исправить" вашу историю (в одну прямую линию), вам нужно отменить слияние (помеченное как голова), и вам нужно перебазировать ваш Rebasing
перейти к вашему master
ветка
git checkout Rebasing
git rebase master
У вас все еще будут конфликты, которые вам нужно разрешить и продолжить с
git rebase --continue
столько раз, сколько необходимо.