我如何将修改的文件转换为以前的修订,在一个特定的 commit hash (我通过 git log 和 git diff 确定)?
当前回答
您可以使用任何引用到一个 git 承诺,包括 SHA-1 如果这是最方便的。
git checkout [commit-ref] -- [文件名]
其他回答
但是,请注意, git checkout./foo 和 git checkout HEAD./foo 并不完全相同; 案例在点:
$ echo A > foo
$ git add foo
$ git commit -m 'A' foo
Created commit a1f085f: A
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 foo
$ echo B >> foo
$ git add foo
$ echo C >> foo
$ cat foo
A
B
C
$ git checkout ./foo
$ cat foo
A
B
$ git checkout HEAD ./foo
$ cat foo
A
(第二个添加步骤是指数中的文件,但它不会被承诺。
Git checkout./foo 是指从指数中转向./foo 路径; 添加 HEAD 指示 Git 将指数中的路径转向其 HEAD 修订之前。
git checkout -- foo
這將重新安裝 foo 到 HEAD. 您也可以:
git checkout HEAD^ foo
一次重新审查等。
如果你知道你需要回去多少承诺,你可以使用:
git checkout master~5 image.png
这假设你在主分支,你想要的版本是5个承诺回来。
如果您在最后的命令中犯下错误的文件,请遵循指示:
开源树,改变这个承诺
此分類上一篇
更改行,并找到你的承诺,错误的文件发送为承诺
此分類上一篇
你可以看到你的更改列表在这个承诺选择它,然后点击... 按钮右侧... 点击逆文件,然后你可以看到它在文件状态选项卡在左侧下方然后点击不步骤:
此分類上一篇
打开您的视觉工作室代码,然后返回,完成您的删除文件之后,您可以在源树上看到您的最后一个承诺的结果。
此分類上一篇
git log --oneline // you see commits, find commit hash to which you want reset
git diff y0urhash src/main/.../../YourFile.java // to see difference
git reset y0urhash src/main/.../../YourFile.java // revert to y0urhash commit
git status // check files to commit
git commit -m "your commit message"
git push origin
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别