Подтвердить что ты не робот

Вытяните, перетащите, нажмите, в одной команде (или только несколько)

При использовании Git я часто обнаруживаю, что при работе в master выполняю следующее:

# work work work...
$ git checkout -b temp
$ git commit -a -m 'more work done'
$ git checkout master
$ git pull origin master
# turns out master was updated since my previous pull
$ git checkout temp
# I don't want a merge commit for a simple bugfix
$ git rebase master
$ git checkout master
$ git merge temp
$ git push origin master
$ git branch -d temp

... и я устал от этого. Есть ли способ сделать этот танец без всех проверок, и желательно без (вручную) создания временной ветки?

4b9b3361

Ответ 1

Если вы не возражаете против создания ветки под названием temp, вы можете просто сделать следующее на master:

git commit -a -m 'more work done'
git fetch origin
git rebase origin/master

... или эквивалентно:

git commit -a -m 'more work done'
git pull --rebase origin master

Если вы хотите сохранить ветвь temp, однако, вы все равно можете сделать это немного короче, не проверяя master только для pull - вам нужно только fetch, а затем переустановить ваша ветка на origin/master:

# work work work...
$ git checkout -b temp
$ git commit -a -m 'more work done'
$ git fetch origin
# It looks like origin/master was updated, so:
$ git rebase origin/master
# Then when you finally want to merge:
$ git checkout master
$ git merge temp
$ git push origin master
$ git branch -d temp

ответьте, напоминает, что вы можете заменить:

$ git fetch origin
$ git rebase origin/master

... с:

$ git pull --rebase origin master

..., что почти эквивалентно. Разница заключается в том, что при запуске git fetch origin все ваши ветки удаленного отслеживания для origin будут обновляться, тогда как при выводе определенной ветки из origin ни один из них не будет - это просто временный ref FETCH_HEAD, который обновляется. Я лично предпочитаю запускать одну дополнительную команду (git fetch origin) и просмотр всех удаленных ветвей, которые были изменены на выходе.

Ответ 2

Вы можете хотя бы оптимизировать перезагрузку: git pull --rebase

Я не совсем уверен, как вам нравятся вещи, но мне нравится мой рабочий процесс вроде этого:

git checkout -b temp
git commit -a -m 'more work done'
git pull --rebase origin master

Таким образом, я сосредоточен на ветке.

Затем позже я делаю

git checkout master
git pull origin master
git merge temp

и др.