Действительно ли возможно объединить изменения от центрального repo до локального ответвления, не имея необходимость фиксировать/прятать редактирования на локальном ответвлении и ведущем устройстве контроля?
Если я работаю над локальной "работой" ответвления и существуют некоторые незафиксированные изменения, я использую следующие шаги для получения обновлений от центрального repo в мое рабочее ответвление.
git stash
git checkout master
git pull
git checkout work
git rebase master
git stash pop
Обычно нет никаких незафиксированных изменений в "работе", и затем я опускаю шаги притона.
То, что я действительно хотел бы, является чем-то как следующее:
git pull master (updates master while work branch is checked out and has changes)
git rebase master (rebases the updates into work branch uncommited changes are still safe)
Действительно ли там что-то легче, чем, что я в настоящее время делаю?
Вы можете выполнить (в ветке работа
):
git stash
git pull --rebase origin master
git stash apply
git pull --rebase
и извлекает удаленные изменения, и перемещает ваши локальные изменения поверх удаленных. Т.е. по сути делает то, что вы показываете в своем сценарии.
Локальные изменения, конечно же, должны быть зафиксированы или сохранены при слиянии
или перебазировании
(потому что, если возникает конфликт слияния, конфликтующие изменения должны быть незафиксированы, чтобы вы могли их разрешить, но Куда тогда пойдут ваши локальные изменения?)
Когда вы позже решите обновить master
и объединить с ним ветвь work
, это не вызовет проблем, поскольку внесенные изменения такой же. Таким образом, вам не нужно обновлять master
при извлечении изменений.
Я не думаю, что вы сможете вытащить, если у вас есть незафиксированные изменения.
Следовательно, вы можете сделать что-нибудь вроде:
git stash
git pull --rebase <remote> <branch> # Calls rebase instead of merge.
git stash pop