不能用rebase拉

时间:2013-09-17 14:09:09

标签: git git-rebase

我收到此消息:

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

是的,我有未提交的更改。我搜索了一种方法,在新代码的基础上修改我未提交的更改,我将从拉动中获得。

我发现了这个:https://github.com/aanand/git-up

我想知道这是否还有发展方向,或者是否还有更多现代化的方法。

我使用git版本1.8.1

4 个答案:

答案 0 :(得分:9)

git-up可能是解决此问题的更复杂方法 否则,你需要存储,重新绑定和存储pop。

git 1.8.5(或1.9,Q4 2013)中将提供“更现代化的方式” 正如我在“Git - How to edit old (not previous) commit with some of the unstaged changes from current index (current state)?”中提到的那样:

  

git rebase”学习了“--[no-]autostash”选项来保存本地更改,而不是拒绝运行(人们正常的响应是将其存储并重新运行)


Since Git 2.9 (June 2016),您现在(由artofwarfare评论):

git pull --rebase --autostash

答案 1 :(得分:5)

你不能真正“改变”你未提交的更改,因为git还不知道它们。您应该在运行git pull --rebase之前存储本地更改,然后再将其应用。

答案 2 :(得分:4)

您可以使用git-up的Python端口:https://github.com/msiemens/PyGitUp

pip install git-up

答案 3 :(得分:3)

我的回答有点晚,但也许对某人有用。

如果您只想寻找单行代码来执行stash / pull rebase / stash pop,则可以创建别名。

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

这会创建一个名为spr的别名,可以执行这三项操作,并允许您在进行非分段更改时快速pull --rebase

git spr