Pull, rebase, push, in one command (or just a few)

后端 未结 2 581
余生分开走
余生分开走 2021-02-07 01:31

When using Git, I often find myself doing the following when working in master:

# work work work...
$ git checkout -b temp
$ git commit -a -m \'more         


        
2条回答
  •  我在风中等你
    2021-02-07 02:07

    If you don't mind not creating a branch called temp, you could just do the following all on master:

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

    ... or equivalently:

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

    If you do want to keep the temp branch, however, you can still make this a bit shorter by not checking out master just to do the pull - you only need to fetch and then rebase your branch onto 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
    

    sehe's answer reminds me that you could replace:

    $ git fetch origin
    $ git rebase origin/master
    

    ... with:

    $ git pull --rebase origin master
    

    ... which is nearly equivalent. The difference is that when you run git fetch origin, all of your remote-tracking branches for origin will be updated, whereas when you pull a particular branch from origin, none of them are - it's just the temporary ref FETCH_HEAD that is updated. I personally prefer running one extra command (git fetch origin), and seeing all the remote branches that have changed in the output.

提交回复
热议问题