Git слияние изменений с локальной ветвью

Можно ли объединить изменения из центрального репо в локальную ветвь без необходимости фиксации/сохранения изменений в локальной ветке и контролере?

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

git stash
git checkout master
git pull 
git checkout work
git rebase master
git stash pop

Обычно в "work" нет незафиксированных изменений, а затем я опускаю шаги stash.

Что мне действительно понравится, это примерно следующее:

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)

Есть ли что-то более легкое, чем то, что я сейчас делаю?

Ответ 1

Вы можете сделать (на ветке work):

git stash
git pull --rebase origin master
git stash apply

git pull --rebase как удаляет удаленные изменения, так и восстанавливает локальные изменения поверх удаленных. То есть по существу делает то, что вы показываете в своем script.

Локальные изменения, конечно же, должны быть зафиксированы или спрятаны на merge или rebase (потому что, если происходит конфликт с объединением, конфликтующие изменения должны быть несовместимы для вас, чтобы разрешить их, но где ваши локальные изменения будут идти? )

Когда вы позже решите обновить master и объединить с ним ветку work, это не вызовет проблем, так как изменения будут одинаковыми. Таким образом, вам не нужно обновлять master при нажатии на изменения.

Ответ 2

Я не думаю, что вы можете потянуть, если у вас есть незафиксированные изменения.

Следовательно, вы могли бы сделать что-то по строкам:

git stash
git pull --rebase <remote> <branch> # Calls rebase instead of merge.
git stash pop

Ответ 3

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

git pull origin master

Протестировано с помощью git версии 1.9.5.msysgit.1

От этот ответ SO