Git ReBase возвращается к началу функции - PullRequest
0 голосов
/ 20 мая 2019

Я хотел бы сделать запрос извлечения, но обнаружил, что мастер опережает ветвь функций.

Так я и делаю

git checkout master
git pull
git git checkout feature
git rebase origin/master

и boom, я получаю сообщение о конфликте (ожидается), но rebase также перезаписывает каждое отдельное изменение, которое я внес в мою функциональную ветвь, и перезаписывает их месячным кодом из функциональной ветви ... (код, который поставляется с rebase, отсутствует any branch afaik) с сообщением о фиксации с начала ветви функции.

rebase также удалит все мои новые классы, которые не могут конфликтовать с мастером. Как локальный, так и удаленный мастер и функция обновлены и показывают ожидаемый код. Но как только я сделаю ребаз.

Значит, rebase хочет, чтобы я делал все 82 коммитов и конфликтов вместо последнего коммита?

Я просто хочу применить мой последний код и выполнить команду master, используя PR. Я не хочу бесполезного кода несколько месяцев назад, когда кто-то еще запустил эту функцию и забыл перебазировать ....

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Оформите свою ветвь функций и перетащите из master в свою ветку feature.Разрешите любые конфликты, если они у вас есть, а затем объедините их с master.Таким образом, вы не потеряете коммиты с вашего feature branch.

git checkout feature-branch
git pull origin master
#resolve any conflicts if you get
git commit
git push
#pull request should be updated with your master branch contents now
0 голосов
/ 20 мая 2019

Вы имеете в виду что-то подобное? Я бы хотел, чтобы моя ветвь функций была перебазирована на master, но мне действительно наплевать на историю моей ветки функций ... все, о чем я хотел бы позаботиться, это последний код на кончике моей ветки , тогда вы можете сделать этот трюк для слияния / сквоша (без фактического сквоша):

git checkout my-branch
git merge origin/master # mix my code with master... don't worry about the merge or the history, we will turn it into a single revision on our next step
git reset --soft origin/master # here's the magic... all the history is gone, all we have now is your differences from origin/master on index and the branch is pointing to origin/master
git commit -m "My feature, in a single revision"

Вот, пожалуйста,

...