4

有没有一种很好的方法可以将我的 Git 工作副本更改为给定数量的提交之前的内容。

例如,要查看过去的 3 次提交,例如:

git reset HEAD - 3

这里的用例是我只想看看当前工作副本中失败的测试在我最近一次提交之前是否也失败了。我不一定想对以前的版本进行任何更改。然后我想将工作副本更改回最新的提交。

4

3 回答 3

8

如果您只是想查看以前的提交(不更改分支/存储库的状态),请使用git checkout.

git checkout HEAD~3

如果您决定从这一点开始进行开发,则可以进行分支。

git checkout -b specialFeature47

要回到现在,只需检查您所在的分支名称。

git checkout master

厌倦建议的git reset解决方案。这些实际上移动了您的分支指针(有效地删除了这 3 个提交)。

于 2013-04-03T15:16:04.753 回答
4

是的,这是可能的:

git reset --hard HEAD~3
于 2013-04-03T11:21:44.947 回答
1

你总是可以这样做:

git checkout HEAD~15

并将 15 个提交移回。当前提示完全不受干扰,您可以四处移动,甚至构建该版本并检查等。要返回,只需执行git checkout mybranch. 如果你想在那里开始工作(并将原来的分支留在冰上),你可以git branch newbranchnewbranch从现在开始工作。

commit --amend在使用任何历史重写命令( 、、rebase等)之前,请仔细考虑您在做什么reset,那里确实存在大量工作损失的可能性。分支git非常便宜,通过回溯历史可以完成的大部分工作都可以通过从过去的某个地方开始创建一个新分支来完成,也许可以用当前master分支切换它。在旧分支上完成的工作可能会在以后派上用场;如果没有,那么保留它的成本可能无论如何都可以忽略不计。

于 2013-04-04T17:10:20.123 回答