简体   繁体   中英

How can I pull all remote changes with rebase instead of merge?

I can pull changes using git pull , but it merges my local commits. Is there a git rebase equivalent with which I can pull in remote changes?

Yes you can git pull --rebase .

You can also set that to be the default pull behaviour when you track a branch with git config branch.autosetuprebase always . Replace "always" with "remote" or "local" if you want to do it to those specific types of branches that you're tracking.

Now all you have to do is git pull .

If for some reason you want to do a merge, you can do git pull --no-rebase .

Hope this helps.

UPDATE: see comments below for how to do this on existing branches.

Instead of autosetuprebase , you can use the pull.rebase config option to change the behavior for every git pull (instead of only newly-created branches):

[pull]
    rebase = true

The difference is this will apply to non-tracking branches and any branches you had set up before enabling autosetuprebase . So if you really want pull --rebase to always be the default, pull.rebase is the way to go!

I usually use a fetch/rebase combination so my current (local) work stays at the top:

git fetch
git rebase origin/develop

To change default behavior from merge to rebase In git >= 1.7.9:

git config --global pull.rebase true

remove global if you want to apply for current repo only

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM