gpt4 book ai didi

git - 如何在不丢失更改的情况下取消提交最后一个未推送的 git 提交

转载 作者:IT王子 更新时间:2023-10-29 01:10:49 27 4
gpt4 key购买 nike

有没有办法恢复提交,以便我的本地副本保留在该提交中所做的更改,但它们在我的工作副本中变成未提交的更改?回滚提交会将您带到之前的提交 - 我想保留所做的更改,但我将它们提交到错误的分支。

这还没有被推送,只是被提交了。

最佳答案

有很多方法可以做到,例如:

如果您没有公开推送提交:

git reset HEAD~1 --soft   

就是这样,您的提交更改将在您的工作目录中,而最后一次提交将从您当前的分支中删除。参见 git reset man


如果您确实公开推送(在名为“master”的分支上):

git checkout -b MyCommit //save your commit in a separate branch just in case (so you don't have to dig it from reflog in case you screw up :) )

正常恢复提交并推送

git checkout master
git revert a8172f36 #hash of the commit you want to destroy
# this introduces a new commit (say, it's hash is 86b48ba) which removes changes, introduced in the commit in question (but those changes are still visible in the history)
git push origin master

现在,如果你想在你的工作副本中进行本地更改时进行这些更改(“以便你的本地副本保留该提交中所做的更改”) - 只需使用 --no-commit 恢复还原提交 选项:

git revert --no-commit 86b48ba (hash of the revert commit).

我制作了一个小例子:https://github.com/Isantipov/git-revert/commits/master

关于git - 如何在不丢失更改的情况下取消提交最后一个未推送的 git 提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19859486/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com