【发布时间】:2017-10-23 19:24:48
【问题描述】:
我们想要撤消最后 2 次提交,它们都被推送到原始主机。在 tortoise git 中,我们可以查看历史记录,然后单击上次提交的第 3 次,然后选择“reset master to this”,我们猜测这意味着恢复到这个版本。
但是,当您选择此选项时,您必须从以下三个选项中进行选择:
- soft - 保持工作树和索引不变。
- 混合 - 保持工作树不变,重置索引
- 硬重置工作树和索引。
不幸的是,我们不知道应该选择这三个选项中的哪一个 - 我们只想撤消最后两个提交并及时返回。
下一个问题是这个操作是发生在远程源、你的 repo 还是你的工作目录,还是这三者的组合?例如。是否必须在还原后完成提交和推送,还是它会为您执行此操作?
我们会猜测 HARD 是我们想要的 - 它会将存储库(不确定是哪个)和我们的本地源代码恢复到以前的版本。如果是这种情况,为什么这不是默认设置,其他两个选项的用例是什么?无论您是否想恢复,如果您只恢复远程仓库,而不是本地工作文件,那么您将处于混乱状态。
我们没有任何本地修改的文件。
注意,我们非常渴望一个不会破坏 git 的解决方案(我们过去曾破坏过 git,不得不创建一个新的 repo)。也许另一种方法是可行的,例如签出以前的版本,然后在最新版本的顶部签入,但我们不知道该怎么做。
我们知道我们可以这样做:
git checkout [revision]
但是我们如何告诉 git 我们想要使这个版本成为新的头或者用这个替换头呢?我猜我们不能只是提交,因为没有什么可提交的,因为我们不再是大师。顺便说一句,如果您查看上一个。版本,然后修改它,然后提交,你要提交什么以及提交到哪里?
我已阅读https://www.atlassian.com/git/tutorials/undoing-changes,但它没有解决本地和远程存储库之间的关系。如果要撤消的提交全部推送到远程源主机,则不清楚恢复远程源、本地 repo 和工作目录的方法是什么——所有 3 个必须恢复到 3 次提交之前的提交。我们并不关心这是通过重置还是还原来完成 - 我们只需要一种适用于所有 3 个位置的方法即可。
正确的接收者可能是这样的:
git status (we are on master with a clean working dir)
git git revert HEAD~2
git commit -m "revert"
git push origin mater
但我们在示例中从未见过这组步骤,如果可能的话,宁愿用乌龟 git 来做。
【问题讨论】:
标签: git tortoisegit