首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将文件重置或恢复到特定版本?

如何将文件重置或恢复到特定版本?
EN

Stack Overflow用户
提问于 2008-10-18 23:34:03
回答 33查看 2.5M关注 0票数 5.2K

我对一个文件做了一些更改,这个文件已经作为一组文件的一部分提交了几次,但现在想要将对它的更改重置/恢复到以前的版本。

我已经做了一个git log和一个git diff来找到我需要的修订版,但就是不知道如何将文件恢复到它过去的状态。

EN

回答 33

Stack Overflow用户

回答已采纳

发布于 2008-10-18 23:39:35

假设您想要的提交的散列是c5f567

代码语言:javascript
复制
git checkout c5f567 -- file1/to/restore file2/to/restore

git checkout手册页提供了更多信息。

如果您希望恢复到c5f567之前的提交,请追加~1 (其中1是您想要返回的提交数,它可以是任何值):

代码语言:javascript
复制
git checkout c5f567~1 -- file1/to/restore file2/to/restore

顺便说一下,我一直对这个命令感到不舒服,因为它既用于普通的事情(在分支之间切换),也用于不寻常的、破坏性的事情(丢弃工作目录中的更改)。

还有一个新的git restore命令,专门用于恢复已修改的工作副本文件。如果您的git足够新,您可以使用此命令,但文档附带一个警告:

此命令是实验性的。行为可能会发生变化。

票数 7.1K
EN

Stack Overflow用户

发布于 2008-12-17 06:59:34

您可以使用diff命令快速查看对文件所做的更改:

代码语言:javascript
复制
git diff <commit hash> <filename>

然后,要使用重置命令将特定文件恢复为该提交:

代码语言:javascript
复制
git reset <commit hash> <filename>

如果进行了本地修改,则可能需要使用--hard选项。

管理路点的一个很好的工作流程是使用标签在时间线中清晰地标记路点。我不太理解你的最后一句话,但你可能想要的是将一个分支与上一个时间点分开。要执行此操作,请使用方便的checkout命令:

代码语言:javascript
复制
git checkout <commit hash>
git checkout -b <new branch name>

然后,当您准备好合并这些更改时,您可以根据您的主线重新设置基础:

代码语言:javascript
复制
git checkout <my branch>
git rebase master
git checkout master
git merge <my branch>
票数 685
EN

Stack Overflow用户

发布于 2009-04-07 21:48:35

您可以使用任何对git提交的引用,如果最方便的话,包括SHA-1。关键是命令看起来像这样:

git checkout [commit-ref] -- [filename]

票数 406
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/215718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档