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

#git

#мерзавец

Вопрос:

Допустим, я извлекаю содержимое mainline репозитория, вношу некоторые изменения, добавляю один коммит my_commit . В то же время кто-то другой нажал someone_commit на кнопку дистанционного mainline управления. Теперь, если я захочу нажать, если я это сделаю git pull , возникнут конфликты, и мне придется добавить merge коммит. Есть ли способ, которым я мог бы добиться чего-то вроде previous_commits->someone_commit->my_commit вместо `

 previous_commits->someone_commit -> merge commits of ...
                ->my_commit      -> 
 

Ответ №1:

Да, это цель git rebase .

Что-то вроде:

 git rebase origin/mainline
 

Это сбросит вашу ветку на магистраль (с previous_commits помощью подсказки), а затем воспроизведет ваши коммиты сверху.

Вам будет предложено разрешить конфликты, если таковые имеются.


Следующее не имеет отношения к вашей текущей ситуации, но учтите, что это изменит историю вашей локальной ветки. Если вы уже отправили свои локальные коммиты в ветку разработки, вам нужно будет использовать принудительную фиксацию, чтобы переписать историю в ветке удаленной разработки. Но если, как вы говорите, вы и коллега работаете в одной и той же ветке, то это вряд ли будет проблемой (и принудительное нажатие на общую ветку может вызвать серьезные проблемы)

Комментарии:

1. Итак, мой текущий коммит имеет HEAD-> mainline, который находится на один коммит впереди от источника / магистрали локально. Мой локальный источник / магистраль находится на фиксации за удаленным. Похоже, это git rebase origin/mainline не работает?

2. Попробуйте git fetch . Это должно вытащить исходные коммиты в вашей origin/mainline ветке. (Я предполагаю mainline , что это имя ветки)