2013-06-25 4 views
2

У меня есть куча удаленных (отслеживающих) ветвей, из которых я создал локальные ветви (так что я могу писать, фиксировать и нажимать), например. изначальный/myfeature. Теперь я хотел бы объединить происхождение/myfeature в мастер.Git merge branch from origin

я мог бы сделать (если предположить, что я в настоящее время на мастер):

git merge origin/myfeature 

, но это гарантированно тянуть последние изменения (или быть идентичен тому, что находится в центре «правды») перед выполнением слияния?

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

ответ

1

Вы делаете fetch, который получает моментальный снимок источника. Затем merge этот снимок. Конечно, по происхождению он мог бы получить еще кое-что.

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

Но прежде чем вы будете слишком взволнованы этим, предположите, что выиграли гонку. Но кто-то добавил патч сразу после вашего слияния. Разве это практически невозможно?

В DVCS это нормально, что происходит, если они это делают, вы делаете еще одно слияние, чтобы забрать новый материал. И гонки не так интересны.

+0

Является ли частью извлечения команды слияния? Если нет, я мог бы также слиться с локальной веткой, как я ее вижу. – u123

+0

'fetch' будет частью команды' pull'. Поэтому, пока ваш местный обновляется, вы можете объединиться с одним, и это не изменит ситуацию. – Schleis

+0

нет, 'fetch' является отдельным,' pull' является комбинацией. Но у него все еще есть те же условия теоретической гонки, что и с более коротким окном для начала - конечно, к тому моменту, когда вы разрешили конфликты и выполнили все проверки, это будет неактуально. –

Смежные вопросы