9

我收到这条消息:

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

是的,我有未提交的更改。我搜索了一种方法,将我未提交的更改重新设置在我从拉取中获得的新代码之上。

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

我想知道这是否仍然是要走的路,或者是否有更现代的路要走。

我使用 git 版本 1.8.1

4

4 回答 4

9

git-up可能是解决这个问题的更复杂的方法。
否则,您需要 stash、rebase 和 stash pop。

“更现代的方式”将在 git 1.8.5(或 1.9,2013 年第四季度)中提供。
正如我在“ Git - 如何使用当前索引(当前状态)的一些未暂存的更改来编辑旧的(不是以前的)提交? ”中提到的:

" git rebase"学到了 " --[no-]autostash"保存本地更改而不是拒绝运行的选项(人们的正常反应是存储它们并重新运行)。


自 Git 2.9(2016 年 6 月)以来,您现在拥有(由artofwarfare评论):

git pull --rebase --autostash
于 2013-09-17T14:20:27.423 回答
5

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

于 2013-09-17T14:21:08.553 回答
4

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

pip install git-up
于 2013-09-18T07:14:15.463 回答
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
于 2014-09-01T21:46:07.563 回答