`git pull --rebase` в ветви объектов для слияния в исходных / основных изменениях - PullRequest
0 голосов
/ 07 ноября 2018

Я прочитал ряд статей и вопросов, касающихся git pull --rebase, но я не уверен, как это применимо к моей ситуации - особенно в отношении общих / публичных веток

Начальная настройка:

  • создать ответвление для функции master, передать его на пульт
  • вносить изменения, фиксировать локально
  • отправить мои коммиты в ветку удаленных функций

Удаленный мастер обновлен

  • Я хочу объединить master изменения с моей feature веткой
  • git pull --rebase origin master

Можно ли --rebase делать, если я уже совершил коммиты и нажал на них?

Обновление По словам Атлассиана, после того, как ваша ветка была открыта (общедоступна), не используйте rebase

Золотое правило git rebase - никогда не использовать его в публичных ветках.

https://www.atlassian.com/git/tutorials/merging-vs-rebasing#the-golden-rule-of-rebasing

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

git pull --rebase является безопасным действием, поскольку оно работает только в вашем локальном хранилище. Изменится только ваша местная история. Впоследствии вы сможете нажимать без какого-либо флага force / force-with-lease.

С точки зрения пульта, ваши изменения будут самыми последними.

git pull сделает коммит слияния, если на удаленном компьютере будут внесены изменения, git pull --rebase перебазирует вашу локальную ветку и применяет ваши коммиты сверху, сохраняя историю неизменной.


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

Если вы делаете:

git fetch origin
git checkout feature
git rebase origin/master

тогда вы должны также

git push --force-with-lease // --force would also work, --force-with-lease prevents accidental deletion of other's commits

означает, что вы также изменяете историю пульта. Это приведет к проблемам, если несколько человек работают или в зависимости от функции ветви. Безопасно, если у вас есть удаленная ветка, и никто не трогает ее.

0 голосов
/ 07 ноября 2018

Может

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

Без перебазирования

(master) A - - - B - - - C - - - D     E
          \                       \   /
(feature)   F - - - G - - - H - - - I

Rebase

(master) A - - - B - - - C - - - D                   E
                                  \                 /
(feature)                          F - - - G - - - H
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...