如何在本地取消提交中所做的所有更改?

时间:2013-02-26 14:58:28

标签: git github

我有一个特定目录,其中在特定提交0x0x0x0x0中修改了源。在那次提交之后,许多其他提交都在主人身上。

我想取消该提交0x0x0x0x0,并且此特定目录中的本地(非上游)具有此提交之前的代码。 我可以为此运行什么git命令?

稍后修改 :我希望仅取消特定提交而不是后续更改。作为代码,它不会影响我,因为它是一个独立的模块。此外,我不会使用此本地存储库来进一步向上游提交。

2 个答案:

答案 0 :(得分:5)

如果您想在引入提交之前返回,那么有效地删除其更改以及之后发生的所有更改(在其他提交中),您可以执行以下操作:

  • 查看旧版本的新分支,这样您就不会丢失任何信息,只能从旧状态重新启动:git checkout -b <newbranchname> commithash~1
  • 将当前分支重置为旧版本,如果没有其他分支指向它们,则有效删除历史记录中的所有提交:git reset --hard commithash~1

但是,如果您只想在保留之后所做的所有更改的同时撤消所述提交,则可以执行此操作:

git revert commithash

答案 1 :(得分:1)

可以使用以下命令返回任何提交:

git reset --hard commit_identifier

注意:要获取提交标识符,请使用git log命令

您还可以使用以下命令重置上次提交:

git commit --amend

请查看下一个链接以获取更多信息:

http://www.kernel.org/pub/software/scm/git/docs/git-reset.html