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

1N5*_*818 7 git

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

假设我正在使用hash 6进行提交.我想要做的就是回到hash 3,这样我的代码库的状态就像我提交hash 3时的情况一样,好像其他提交从未发生过一样.

当我看到像回答这个,好像每个人都有不同的答案.reset,revert,rebase?我甚至不确定我是否知道这三个单词在英语中的区别.

我只是想参加之前的提交.谁能告诉我怎么做?

Chr*_*röm 12

如果你已经将你的分支推到了某个地方,或者有人从你那里撤走了,你唯一的选择就是git revert $COMMIT....

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

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

git revert HEAD~2..HEAD
Run Code Online (Sandbox Code Playgroud)

如果你完全保留你的提交本地和私人,你可以简单地git reset $COMMIT.

这将移动您的分支指针,$COMMIT以便分支不再包含以下提交.

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

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

git reset HEAD~3
Run Code Online (Sandbox Code Playgroud)

git rebase 听起来不像你想要的.

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