首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git保持在同一提交上,但还原文件

Git保持在同一提交上,但还原文件
EN

Stack Overflow用户
提问于 2019-04-08 09:10:53
回答 4查看 358关注 0票数 0

我希望将文件重置为以前的提交,但保持当前提交。所以如果我这么做了

代码语言:javascript
复制
git init
touch 1; git add 1; git commit -m "1"
touch 2; git add 2; git commit -m "2"
touch 3; git add 3; git commit -m "3"

这将产生3次提交。我希望停留在提交#3上,但将阶段重置到在提交#2时的状态。

  • git reset --(hard|soft|mixed|merge|keep)
  • git checkout
  • git revert

因此,在执行了一些神奇的命令blah之后,我希望得到以下结果:

  • git log显示头部仍然处于提交#3
  • ls .显示我的文件系统上只有12文件。
  • git diffgit diff --cached显示文件3已被删除。

我可以做git reset --hard <hash-2>,但是这会将HEAD移动到提交#2。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-04-08 09:43:53

代码语言:javascript
复制
git revert HEAD -n

使用-n--no-commit,它会恢复工作树和索引中的更改,但不会创建提交。可以将HEAD替换为其他等效的提交-ish。如果要提交已恢复的文件,则需要运行git commit

如果您想恢复连续提交,以注释中的情况为例,

代码语言:javascript
复制
git revert HEAD~3..HEAD -n
票数 1
EN

Stack Overflow用户

发布于 2019-04-08 09:14:15

使用此方法可将特定文件还原为给定的提交。你的头会保持不变。

git checkout <commit-hash> -- file1/to/restore

票数 1
EN

Stack Overflow用户

发布于 2019-04-08 09:38:55

有一种方法我可以分三步完成:

  • a=$(git rev-parse HEAD)
  • git reset --hard #hash-commit-2
  • git reset --soft $a
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55569871

复制
相关文章

相似问题

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