在我的一个开发分支中,我对代码库做了一些更改。在我能够完成正在开发的功能之前,我必须将当前分支切换到master来演示一些功能。但仅仅使用“git checkout master”就保留了我在开发分支中所做的更改,从而破坏了master中的一些功能。因此,我所做的是在我的开发分支上提交一条提交消息“临时提交”,然后为演示签出主控。

现在,我已经完成了演示并返回到我的开发分支中,我想删除我所做的“临时提交”,同时仍然保留我所作的更改。这可能吗?


当前回答

就我而言,我已经推动回购。哎哟

您可以通过以下操作恢复特定提交,同时将更改保留在本地文件中:

git revert -n <sha>

通过这种方式,我能够保留所需的更改,并取消已经推送的提交。

其他回答

使用git2.9(精确到2.9.2.windows.1)git reset HEAD^提示更多信息;不确定此处的预期输入。请参考下面的截图

找到了另一个解决方案git-resetHEAD~#numberOfCommits,我们可以使用它来选择要通过保持更改不变来重置的本地提交数。因此,我们有机会丢弃所有本地提交以及有限数量的本地提交。

请参阅下面显示git reset HEAD~1的屏幕截图:

2020简单方法:

git reset <commit_hash>

(您要保留的最后一次提交的提交哈希)。

如果推送提交,则可以执行以下操作:

git push -f

您将在本地保留当前未提交的更改

还有一种方法。

在临时提交的顶部添加提交,然后执行以下操作:

git rebase -i

要将两个提交合并为一个(命令将打开带有显式指令的文本文件,请对其进行编辑)。

首先,您可以使用以下命令查看日志-

git reflog

这将显示所有提交,然后找出要撤消的提交以及与之关联的头号,然后输入以下命令

git reset HEAD@{#NumberOfCommitYouWantToUndo} 

例如git reset HEAD@{3}

git-resetHEAD@{#}显示重置后的所有未分级更改

是的,您可以在不删除更改的情况下删除提交:

git reset @~