Внесение вклада в проект по github, как "перегрузить мой запрос на загрузку поверх мастера",

Хорошо, поэтому я вношу свой вклад в проект по github. Проект github upstream, мой разветвленный репо на github - origin и мой local репо на моем компьютере.

git checkout -b feature
# Working on feature
git commit -a -m 'only commit on feature'

тогда я отправляю запрос на перенос

git push origin master

Запрос на перенос проверяется и необходимо выполнить несвязанные изменения. Кто-то другой совершает фиксацию и сливается в upstream/master

Теперь меня спрашивает upstream сопровождающий "перегрузить мой запрос на перенос поверх мастера

Это моя история (включить звуковой эффект закона и порядка).....

Я не внес никаких изменений в запрос на pull и его еще одну фиксацию в функции ветки.

git checkout master
git fetch upstream
git checkout feature
git rebase master
=> "Current branch feature is up to date."
git push origin feature
=> "Everything up-to-date"

Я не понимаю. Как это возможно, когда я знаю, что кто-то совершил и слился с upstream/master после того, как я нажал мой запрос на растяжение на origin/feature?

Может ли кто-нибудь сказать мне, какая правильная процедура должна быть в этой ситуации?

Ответ 1

Вы показываете только выборку на восходящем репо. Это фактически не обновляет ни одно из ваших локальных веток. Он обновляет только ваши знания upstream. Вы должны убедиться, что upstream/master полностью объединено в ваш master, как и с git pull, до перезагрузки на master или просто просто переформатируйте на upstream/master.

то есть:

git checkout master
git pull upstream master
git checkout feature
git rebase master

или

git checkout feature
git rebase upstream/master

Update:

После фиксации локальной ветки feature вам нужно вернуть ее обратно в origin, чтобы завершить обновление запроса на растяжение. Поскольку вы уже нажимали feature один раз, вы не можете просто push снова, потому что rebase изменяет историю, и это не длинная перемотка вперед. Обычно, когда нажатие происходит с ошибкой "без перемотки вперед", вы разрешаете его, выполняя тягу, но притяжение просто объединяет две расходящиеся истории, которые определенно не то, что вы хотите. Это означало бы, что ваш старый (pre rebase) feature филиал будет объединен с новой (post rebase). Вы хотите перезаписать origin/feature состояние нового ветки feature, сбросив любую запись старого. Это означает, что вы захотите принудительно нажать, даже если это не ускоренная перемотка вперед, используя git push -f origin feature. Примечание: принудительное нажатие опасно, и вы можете потерять его. Используйте его только в том случае, если вы абсолютно уверены, что знаете, что делаете, например, прямо здесь, где вы намеренно хотите отказаться от старых бесполезных коммитов в ветке pre-rebase feature.

Ответ 2

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

Обратите внимание, что с сентября 2016 года сопровождающий может инициировать сам rebase.

См. "" Запросы на возврат и слияние"

Когда вы выбираете новую опцию "Rebase and merge", коммиты из ветки запроса на выталкивание сводятся к вершине базовой ветки, а затем сама базовая ветвь быстро перенаправляется на эту недавно перевыпущенную головку. Ребазы автоматически устанавливают коммиттер переустановленных коммитов для текущего пользователя, сохраняя при этом информацию об авторстве. В этой операции не будет изменена ветвь запроса на вытягивание.

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

https://cloud.githubusercontent.com/assets/2195/18671961/a03fa9b6-7f35 -11e6-8fa0-e16b2fede8ca.gif