我如何将修改的文件转换为以前的修订,在一个特定的 commit hash (我通过 git log 和 git diff 确定)?
当前回答
要回到最后一个承诺的版本,这是最常用的,你可以使用这个更简单的命令。
git checkout HEAD file/to/restore
其他回答
如果你知道你需要回去多少承诺,你可以使用:
git checkout master~5 image.png
这假设你在主分支,你想要的版本是5个承诺回来。
至于 git v2.23.0 有一个新的 git 恢复方法,这应该是由 git checkout 负责的一部分(即使接受的答案提到, git checkout 是相当困惑的)。
这个命令的默认行为是恢复一个工作树的状态,内容来自源参数(在您的情况下将是一个承诺哈希)。
因此,基于Greg Hewgill的答案(假设承诺哈希是c5f567)命令会看起来如下:
git restore --source=c5f567 file1/to/restore file2/to/restore
或者,如果你想恢复一个承诺的内容之前 c5f567:
git restore --source=c5f567~1 file1/to/restore file2/to/restore
我必须在这里插入EasyGit,这是一个插槽,使Git更接近新人,而不会混淆经验丰富的用户。
此分類上一篇: foo/bar foo/baz
有趣的是, git checkout foo 如果工作副本在一个名为 foo 的目录中工作,则不会工作;但是, git checkout HEAD foo 和 git checkout./foo 都会:
$ pwd
/Users/aaron/Documents/work/foo
$ git checkout foo
D foo
Already on "foo"
$ git checkout ./foo
$ git checkout HEAD foo
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
推荐文章
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何完全删除TFS绑定
- 哪些Eclipse文件属于版本控制?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 如何删除多个已删除的文件在Git仓库
- 使用vimdiff查看所有' git diff '
- 如何拉特定的目录与git
- 本地存储库中的文件与源文件之间的差异