2016-12-06 79 views
1

如果我有以下日志历史记录:如何撤消多个提交

d46a977 Commit 3 
750bcaa Commit 2 
a49d225 Commit 1 

而且我想恢复到提交1,失去了取得了提交2和3,提交修改应如何是做什么?

我一直在阅读一些教程,比如这https://www.atlassian.com/git/tutorials/undoing-changes/git-checkout

但是,从我能想出还原可以用来最后一次提交,并复位可以用来撤销了一些。但在教程中,我没有看到任何使用重置的例子,其中指定了实际的提交版本(即重置为49d225)。因此,我很困惑它是如何重新设置的。

回答

1
git reset --hard a49d225 

将重置您的本地存储库提交a49d225并拒绝所有进一步的更改。请参阅manual for git-reset

但是,如果您已将更改推送到远程,则不应该这样做。在这种情况下,我只需检查该提交并在那里创建一个新分支。

git checkout a49d225 
git checkout -b feature/new-branch 

如果它不是一个特性分支,只有你工作,而是由整个团队(如masterdevelop分支整个项目)共享的东西,最好的选择似乎是明确的回复两个承诺你不再需要。

git revert d46a977 
git revert 750bcaa 

这将创建两个新的提交与增量抵消原提交2提交3。在历史中将会显示这些更改已引入,然后显式回滚。而且,这样您可以避免更改历史记录,以便您的团队能够安全地进行推拉。

只要这些不是合并提交,这应该是非常好的。这些可能需要额外的关注。

0

您可以使用底垫中,重订当前分支的提交1. (创建一个从提交1,然后衍合主枝到这个新创建的分支的一个分支)。