rebase vs reset vs revert?我只是想回滚

时间:2016-08-31 22:41:48

标签: git

假设我做了一些提交,让我们称它们为1,2,3,4,5和6(哈希)。

假设我正在使用哈希6进行提交。我想要做的就是回到哈希3,使其成为我的代码库的状态,就像我提交哈希3时的状态一样,就像其他提交一样从未发生过。

当我看到像this这样的答案时,似乎每个人都有不同的答案。 resetrevertrebase?我甚至不确定我是否知道这三个单词在英语中的区别。

我只想参加之前的提交。有人能告诉我怎么做吗?

2 个答案:

答案 0 :(得分:11)

如果您已将某个分支机构推到某个地方或某人从您那里撤离,那么您唯一的选择就是git revert $COMMIT...

这将创建一个提交,撤消您在提交$COMMIT...中所做的任何事情。

例如,要还原最后三次提交:

git revert HEAD~2..HEAD

如果您将提交完全保留为本地和私有,则只需git reset $COMMIT

这会将您的分支指针移动到$COMMIT,因此分支不再包含以下提交。

根据索引和工作树的状态,您可能需要git reset --soft $COMMITgit reset --hard $COMMIT中的任何一个选项。

例如,要将分支重置为最后三个之前的提交:

git reset HEAD~3

git rebase听起来不像你想要的那样。

当你想要从它们所基于的一个提交中复制或“移动”一些提交时,你使用它,基于另一个提交(另一个基础),因此“rebase”。

答案 1 :(得分:-1)

这样怎么样:

  1. 为哈希3创建分支。

  2. 创建PR或将此分支合并到master(hash 6)