我对我的分支做了一些更改,并意识到我忘记了我已经对该分支存储了一些其他必要的更改。我想要的是一种将我所存储的更改与当前更改合并的方法。

有办法做到这一点吗?

这更多的是为了方便,我最终放弃了,首先提交了我当前的更改,然后是我隐藏的更改,但我更喜欢一下子把它们弄进来。


当前回答

运行git stash pop或git stash apply本质上是一个合并。你不需要提交当前的更改,除非在存储中更改的文件也在工作副本中更改,在这种情况下,你会看到以下错误消息:

error: Your local changes to the following files would be overwritten by merge:
       file.txt
Please, commit your changes or stash them before you can merge.
Aborting

在这种情况下,您不能一次性将存储应用于当前更改。您可以提交更改,应用stash,再次提交,如果您真的不想要两次提交,则可以使用git rebase压缩这两次提交,但这可能会带来更多麻烦。

其他回答

我这样做的方式是git先添加这个,然后git stash apply <stash code>。这是最简单的方法。

我找到了另一个解决办法。您可以提交当前的开放更改,然后弹出您的存储,然后软重置到上次提交之前。

git commit -am 'Open changes'
git stash pop
git reset --soft HEAD~1

你可以很容易

提交当前更改 拿出你的私藏物品,解决冲突 从存储中提交更改 软重置来提交你所来自的(最后一次正确提交)

我想要的是一种方法来合并我的存储更改与当前 变化

这里有另一个选择:

git stash show -p|git apply
git stash drop

Git stash show -p将显示最后保存的stash的补丁。Git apply会应用它。合并完成后,合并的stash可以使用git stash drop删除。

运行git stash pop或git stash apply本质上是一个合并。你不需要提交当前的更改,除非在存储中更改的文件也在工作副本中更改,在这种情况下,你会看到以下错误消息:

error: Your local changes to the following files would be overwritten by merge:
       file.txt
Please, commit your changes or stash them before you can merge.
Aborting

在这种情况下,您不能一次性将存储应用于当前更改。您可以提交更改,应用stash,再次提交,如果您真的不想要两次提交,则可以使用git rebase压缩这两次提交,但这可能会带来更多麻烦。