我已经开始与几个朋友合作一个项目&他们使用heroku git存储库。

几天前我克隆了存储库,他们已经做了一些更改,所以我正在尝试获得最新的更新

我运行git拉——rebase命令,如这里所述(这是正确的方式吗?):https://devcenter.heroku.com/articles/sharing#merging-code-changes

我得到以下错误:

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

我的猜测是我把代码弄乱了,现在它想让我要么提交要么放弃(这就是stash的意思吗?)这些更改。这就是正在发生的事情吗?如果是这种情况,我想放弃我可能做的任何更改,只是从git存储库中获得更新的代码。

知道我能做什么吗?


当前回答

首先从 git状态

看看是否有任何挂起的更改。 要丢弃它们,运行

请注意,运行此命令将丢失所做的更改

git reset --hard

其他回答

首先从 git状态

看看是否有任何挂起的更改。 要丢弃它们,运行

请注意,运行此命令将丢失所做的更改

git reset --hard

一般来说,用rebase拉是一种很好的做法。

然而,如果你的索引不是干净的,也就是说,你所做的更改还没有提交,你就不能这样做。

你可以这样做,假设你想保留你的更改:

用git Stash保存您的更改 拉从主与rebase 重新应用你在(1)中存储的更改:git stash apply stash@{0}或更简单的git stash pop

你可以一直这样做

git fetch && git merge --ff-only origin/master

如果你的未提交更改与上游更改冲突,你将得到(a)没有更改,或者(b)与stash/pull/apply相同的效果:rebase将你放在HEAD的最新更改上,而你未提交的更改保留原样。

如果你想在每次重基时自动保存你的更改并取消保存它们,你可以这样做:

git config --global rebase.autoStash true

如果您想在执行重基时保持工作更改,您可以使用—autostash。从文档中可以看到:

在开始rebase之前,如果需要,将本地修改隐藏起来(参见git-stash[1]),并在完成时应用隐藏。

例如:

git pull --rebase --autostash