如何恢复我所做的改变

时间:2014-02-23 16:38:53

标签: git

这可能是一个愚蠢的问题,但我宁愿安全,然后搞乱一切。

我做了两次糟糕的提交......我在一次提交中删除了一个文件夹。在下一次提交中,我重新创建了该文件夹。在我做出这些提交之后,我的队友已经对回购做出了承诺,但他们的提交与我的承诺无关。 (我有自己的文件夹,我对其进行了更改)。

如何在不影响队友提交的情况下撤消我的两次提交?

假设第一次提交的提交哈希值为AAA111,第二次提交的提交哈希值为BBB222。

谢谢!

3 个答案:

答案 0 :(得分:1)

如果您的提交被推送,您可以在每个提交上运行git revert并撤消它们。或者,当您进行更改时,最终会出现合并冲突,并且更改将得到解决。

如果您的更改仅在您的本地分支上,则可以git reset --hard <sha of commit before your commits>警告:这将删除您的所有更改。这将使你承诺没有发生。

如果您的更改仅在您的本地分支上,并且您有其他要保留的提交,则可以执行git rebase -i <sha of commit before your changes>,这将显示一个编辑器,列出您拥有的所有提交。删除不再需要的两个提交,保存文件。这将从您的历史记录中删除提交并保存您拥有的其他提交。

答案 1 :(得分:1)

如果您的提交尚未推送或仅推送到私有分支(即没有其他人在该分支上工作),您可以使用git rebase -i AAA111^并删除这些提交。在这种情况下,您的错误提交从未发生过。 :)

如果您已经推送了提交,则不能简单地删除这些提交。您必须添加新提交以撤消原始提交所做的更改。请使用git revert AAA111 BBB222

答案 2 :(得分:0)

只需还原提交:

$ git revert BBB222 AAA111