Cannot pull with rebase

2020-07-06 07:25发布

I get this message:

Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.

Yes, I have changes which are not committed. I searched a way to rebase my uncommitted changes on top of the new code which I would get from a pull.

I found this: https://github.com/aanand/git-up

I want to know if this is still the way to go, or if there are more modern ways to go.

I use git version 1.8.1

4条回答
你好瞎i
2楼-- · 2020-07-06 07:51

You can use the Python port of git-up: https://github.com/msiemens/PyGitUp

pip install git-up
查看更多
Evening l夕情丶
3楼-- · 2020-07-06 08:03

I answer a little late but maybe that can be useful for someone.

If you are just looking for a one-liner to execute stash / pull rebase / stash pop, you can create an alias.

git config --global alias.spr '!f(){ git stash && git pull --rebase && git stash pop; };f'

This creates an alias named spr that does the three operations and allows you to quickly pull --rebase while you have unstaged changes.

git spr
查看更多
再贱就再见
4楼-- · 2020-07-06 08:06

git-up is probably the more sophisticated way to solve this issue.
Otherwise, you need to stash, rebase and stash pop.

The "more modern way" will be available in git 1.8.5 (or 1.9, Q4 2013).
As I mention in "Git - How to edit old (not previous) commit with some of the unstaged changes from current index (current state)?":

"git rebase" learned "--[no-]autostash" option to save local changes instead of refusing to run (to which people's normal response was to stash them and re-run).


Since Git 2.9 (June 2016), you now have (as commented by artofwarfare):

git pull --rebase --autostash
查看更多
仙女界的扛把子
5楼-- · 2020-07-06 08:14

You can't really "rebase" your uncommitted changes since git does not know about them yet. You should stash your local changes before you run git pull --rebase then apply them back.

查看更多
登录 后发表回答