这可能是一个愚蠢的问题,但我宁愿安全,然后搞乱一切。
我做了两次糟糕的提交......我在一次提交中删除了一个文件夹。在下一次提交中,我重新创建了该文件夹。在我做出这些提交之后,我的队友已经对回购做出了承诺,但他们的提交与我的承诺无关。 (我有自己的文件夹,我对其进行了更改)。
如何在不影响队友提交的情况下撤消我的两次提交?
假设第一次提交的提交哈希值为AAA111,第二次提交的提交哈希值为BBB222。
谢谢!
答案 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