Перебазировал ветку dev на master, мастер вернул несколько коммитов назад.Безопасно ли снова делать ребаз на возвращенном мастере? - PullRequest
0 голосов
/ 05 декабря 2018

Во-первых, я сделал ребаз на мастере:

A - B - C
         \
          D' - E'

Затем мастер получил несколько обращений назад, поэтому удаленно это выглядит так:

A - B

В то время как локально мой разработчикВ ветви все еще есть коммиты C.Безопасно ли делать

git pull origin master git rebase master

Не дублируют ли некоторые коммиты?Как правильно вернуться к

A - B
      \
       D' - E'

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Решение проблемы

Существует простое решение с использованием --onto

git rebase --onto B C

это означает:

Rebaseкоммит, достижимый из HEAD, чьим родителем является C поверх B.

Безопасность предлагаемого решения

В вашем случае

    master
        |
A - B - C
         \ 
          D' - E'
               |
              HEAD

git pull origin master

 master
    |
A - B - C
         \ 
          D' - E'
               |
              HEAD

git rebase master

просто ничего не сделает.Как вы можете видеть, ваша ГОЛОВА уже основана на мастере.Так что git скажет вам, что делать нечего.

В git все локальное (без push) безопасно, так как у вас нет неверсированной локальной модификации, просто поместите какой-нибудь временный тег или ветки, если вы этого не делаетеуверен в том, что ты делаешь.Вы всегда можете вернуться к ним, если испортите свое дерево.

0 голосов
/ 05 декабря 2018

Один из способов достижения желаемой истории - использовать

git rebase -i origin/master

и удалить нежелательные коммиты (C) из списка.

Ответ на вопрос "это безопасно?""да, если все сделано правильно".

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