я могу сделать ребаз более одного раза? - PullRequest
0 голосов
/ 27 апреля 2018

Меня снова вводят в Git. Я не так хорошо знаком с перебазированием, и я хочу начать его использовать.

Команда, с которой я работаю, не разрешает коммиты в нашу ветку master. Мы должны создать ветку объектов и затем создать запрос на извлечение.

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

Итак, мой план состоит в том, чтобы поработать над моей веткой функций и периодически перезагружать с (вкл?) Master. Сохранит ли это все мои коммиты в конце истории изменений, когда я буду готов отправить свой пул-запрос?

Ответы [ 5 ]

0 голосов
/ 27 апреля 2018

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

Рассмотрим сценарий, когда какая-то другая ветвь говорит, что «A» была слита с вашей веткой функций из-за некоторой зависимости. Теперь все коммиты, которые были сделаны в этой объединенной ветке (скажем, X количество коммитов), будут представлены в вашей ветке функций а также с одним дополнительным коммитом слияния. Теперь, если вы попытаетесь перебазировать вашу ветвь функций с помощью master, ребазинг произойдет для всех X коммитов, которые были введены слиянием ветки A. Таким образом, есть вероятность конфликтов X количество раз во время этой операции.

Тем не менее, было бы лучше просто объединить мастер с вашей веткой функций. В этом случае конфликт может произойти только один раз, в зависимости от текущей статуи вашей функциональной ветви и главной ветви.

0 голосов
/ 27 апреля 2018

Кажется, вы правильно поняли процесс. Моя команда работает аналогично тому, что вы описали, потому что руководитель нашей команды предпочитает, чтобы все связанные изменения были в одном (предпочтительно небольшом) коммите.

После того, как я закончу вносить изменения в мою функциональную ветвь, я проверяю, что мой локальный master соответствует нашей восходящей ветви, затем git rebase -i master.

Это все обновляет вместе с мастером, а -i позволяет мне просматривать все мои коммиты и складывать их вместе в соответствии с просьбой лидера моей команды.

Как вы предлагаете, ребазинг - это всегда мой последний шаг перед выполнением запроса на извлечение.

0 голосов
/ 27 апреля 2018

Да, вы можете rebase столько раз, сколько хотите. На самом деле, то, что вы хотите сделать, является настолько распространенным, что команда pull имеет встроенный флаг:

git pull --rebase
0 голосов
/ 27 апреля 2018

Перебрасывание ветки на другое «повторное применение» (в наши дни довольно хитро) фиксаций текущей извлеченной ветки поверх вершины цели.

Так что, да, если вы будете делать это снова и снова, то вы будете поддерживать текущую ветку в актуальном состоянии. Я думаю, что это опечатка в вопросе, но вы не хотите «перебазировать мастер», вы хотите перебазировать на мастер.

Иногда вы можете столкнуться с множеством конфликтов, и в этом случае вам, вероятно, стоит подумать о слиянии именно с этого момента. Разрешение конфликтов при перебазировании - довольно трудная задача, поскольку вы должны исправлять конфликты с первого коммита и далее: самое первое слияние, которое вы сделаете, создаст конфликты, если последующие коммиты изменят тот же фрагмент кода, и так далее, и так далее. Слиянием вы исправляете их все сразу. Но они, как только вы сливаетесь, должны продолжать сливаться.

0 голосов
/ 27 апреля 2018

Да, вы можете сделать ребаз более одного раза.

После перебазирования вы получаете новый набор коммитов. Эти коммиты в точности такие же, как и все другие коммиты, и не содержат записей о том, что их перебазировали.

Главное, к чему нужно быть осторожным, - это возможность возникновения конфликтов перебазирования. Поскольку вы чаще перебираете, вы, возможно, чаще сталкиваетесь с конфликтами, и вам необходимо разрешать их чаще. Но пока вы готовы справиться с ними, с вами все будет в порядке.

...