撤消更改两个提交并进入清理状态。

时间:2018-05-30 15:22:00

标签: git

假设我的提交历史记录如下:

A <- B <- C

我目前正在使用C.我讨厌我的提交B和C,我想回到A,干净的升级而且没有变化..我想要A的状态。我怎样才能最有效率地做到这一点办法。我目前正在这样做:

git revert --no-commit B
git revert --no-commit A
git checkout .

这也使得没有恢复提交/没有新提交显示我的恢复。说我想要这个。我该怎么办?

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

git reset --hard A

这将带您回到修订版A,它非常接近于说&#34; b和C没有发生&#34;。此外,当前分支将开始指向A,因此请小心使用。

如果你想要的是一个跟随C的新版本D(A&lt; -B&lt; -C&lt; -D),以便它具有与A相同的内容,那么你可以试试这个:

git checkout A -- . # take back content of the whole project to how A was
git commit -m "Going back to revision A"

如果您想使用不会创建提交的还原来执行此操作:

git revert --no-commit A..C
git commit -m "going back to A"

或者:

git revert --no-edit A..C
git reset --soft HEAD~2 # Moving branch pointer to C keeping everything else as-is
git commit -m "going back to A"

答案 1 :(得分:0)

返回提交A,按照以下命令执行:

git reset --hard A

如果您在本地仍有一些未跟踪的文件,则可以在命令下运行:

git clean -f -d

但是如果您的分支也被其他人使用,那么最好的解决方案是仅使用revert命令来避免每个人的冲突。