我已经开始与几个朋友合作一个项目&他们使用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 checkout - <文件名>或git reset -很难摆脱这些更改。

在大多数情况下,git会告诉您如何处理更改。例如,您的错误消息说git隐藏您的更改。如果你想留下他们的话。拉后,你会做git stash pop和你的变化将被重新应用。

Git status还提供了如何消除更改的方法,这取决于文件是否处于提交阶段。

其他回答

做git状态,这将显示哪些文件已经更改。既然你说你不想保留这些更改,你可以做git checkout - <文件名>或git reset -很难摆脱这些更改。

在大多数情况下,git会告诉您如何处理更改。例如,您的错误消息说git隐藏您的更改。如果你想留下他们的话。拉后,你会做git stash pop和你的变化将被重新应用。

Git status还提供了如何消除更改的方法,这取决于文件是否处于提交阶段。

遵循以下步骤

从特性/分支(输入下面的命令)

Git checkout master

git pull

Git签出特性/分支名

Git 合并大师

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

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

Git恢复- staging yarn.lock

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

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

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

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

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

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

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

瞧!它还没有让我失望。