Это действительно комментарий к второму варианту Элазара Лейбовича , который стал немного излишним для комментария :) В терминах графа коммитов я бы в основном сделал то же самое, что и вариант 2, но поддерживаюместный филиал, в котором есть мои изменения, а не остаться на хозяина.Другими словами, обычное состояние будет выглядеть так:
A --- B --- C (master,origin/master) --- D --- E (local)
... если я хочу обновить с мастера, я бы сделал:
git checkout local
git fetch origin
git rebase origin/master
... чтобы получитьto:
A --- B --- C (master) --- F --- G (origin/master) --- D' --- E' (local)
Если бы я добавил больше коммитов на local
, я бы сделал это git rebase -i origin/master
, чтобы я мог убедиться, что мои D
и E
по-прежнему наиболеенедавний в истории.
Преимущество этого по сравнению с вариантом 2 Элазара Лейбовича состоит только в том, что он уменьшает риск того, что вы случайно столкнете локальные изменения с master
с git push
или git push master
, поскольку ваши локальные изменения никогда не будут в ветке master
и не должно быть ветки с именем local
удаленно.(Если это так, выберите другое имя, очевидно:))
Если у вас есть что-то, что вы хотите вернуть обратно к master
, например, коммиты H
и I
здесь:
A -- B -- C (master) -- F -- G (origin/master) -- H -- I -- D'' -- E' (local)
... вы бы сделали:
git checkout master
git merge I
git push origin master