如何在git中回滚到特定的提交?
有人能给我的最好答案是使用git恢复X次,直到我达到所需的提交。
假设我想要恢复到20次提交前的提交,我需要运行20次。
有更简单的方法吗?
我不能使用重置,因为这个存储库是公共的。
如何在git中回滚到特定的提交?
有人能给我的最好答案是使用git恢复X次,直到我达到所需的提交。
假设我想要恢复到20次提交前的提交,我需要运行20次。
有更简单的方法吗?
我不能使用重置,因为这个存储库是公共的。
当前回答
我不确定发生了什么变化,但如果没有分离选项,我无法签出特定的提交。对我有效的完整命令是: Git签出-detach[提交散列]
要从分离状态返回,我必须签出我的本地分支:git checkout master
其他回答
在git中回滚一个特定的提交:
要返回一个旧的git提交:(the ac2ec…是提交名称)
git checkout ac2ece0219689ed86b08c93dfebb0d02c0f1d5b1
命名一个你想要HEAD分离指向的新分支:
git branch get_back_to_past
结帐到分支
git checkout get_back_to_past
现在该分支有了过去的提交项。例如,如果您愿意,您可以将其合并到主数据库。
有关git头部和回滚到旧版本的更多信息:点击这里
好吧,我想问题是,你说的“回滚”是什么意思?如果你不能重置因为它是公共的,你想保持提交历史完整,你的意思是你只是想让你的工作副本反映一个特定的提交吗?使用git签出和提交散列。
编辑:正如评论中指出的,使用git签出而不指定分支将使您处于“无分支”状态。使用git checkout <commit> -b <branchname>签入分支,或者git checkout <commit>。签入当前分支。
我不确定发生了什么变化,但如果没有分离选项,我无法签出特定的提交。对我有效的完整命令是: Git签出-detach[提交散列]
要从分离状态返回,我必须签出我的本地分支:git checkout master
试试这个:
git checkout [revision] .
其中[revision]是提交散列(例如:123456789012345678901234567890123456789012345678ab)。
别忘了。最后,非常重要。这将对整个树应用更改。你应该在git项目的根目录下执行这个命令。如果您在任何子目录中,则此命令只更改当前目录中的文件。然后承诺,你应该是好的。
你可以通过
git reset --hard
这将从工作目录和暂存区域删除所有修改。
回退到特定的提交:
git reset --hard commit_sha
回滚10次提交:
git reset --hard HEAD~10
如果你不想重写历史,你可以像下面的帖子一样使用“git revert”
如何将Git存储库恢复到以前的提交?