我已经开始与几个朋友合作一个项目&他们使用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存储库中获得更新的代码。

知道我能做什么吗?


当前回答

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

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

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

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

其他回答

这对我来说很管用:

git fetch
git rebase --autostash FETCH_HEAD

当非分期变化是因为git试图修复文件上的eol约定时(就像我的情况一样),再多的存储、签出或重置都不会让它消失。

但是,如果真正的目的是重新设置基数并忽略未分期的更改,那么我所做的就是在本地删除分支,然后再次签出它。

git checkout -f anyotherbranchthanthisone
git branch -D thebranchineedtorebase
git checkout thebranchineedtorebase

瞧!它还没有让我失望。

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

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

例如:

git pull --rebase --autostash

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

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

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

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

您只需要使用下面的命令恢复未分段的更改

对于我的情况,我在纱线文件中有错误,对于你的情况,它可以是另一个文件

Git恢复- staging yarn.lock