我如何将修改的文件转换为以前的修订,在一个特定的 commit hash (我通过 git log 和 git diff 确定)?
当前回答
您可以使用任何引用到一个 git 承诺,包括 SHA-1 如果这是最方便的。
git checkout [commit-ref] -- [文件名]
其他回答
git revert <hash>
它听起来像你认为 git revert 只会影响最新的承诺。
它不会解决你的问题,如果你想转换一个更改在一个特定的文件,并承诺更改超过该文件。
使用 git log 获取特定版本的 hash 密钥,然后使用 git checkout <hashkey>。
注意:不要忘了在最后一个之前输入哈希,最后一个哈希标记了您的当前位置(头部)并不会改变任何东西。
首页 > 首页 > 目标文件
git reset HEAD path_to_file
第二次检查该文件
git checkout -- path_to_file
这里有很多建议,主要沿着 git checkout $revision - $file 的线条。
git show $revision:$file > $file
而且,我使用这个很多只是暂时看到一个特定的版本:
git show $revision:$file
或
git show $revision:$file | vim -R -
(OBS: $ 文件需要预定为./ 如果它是 git 显示 $ 修订的相对路径: $ 文件工作)
更奇怪的是:
git archive $revision $file | tar -x0 > $file
你可以在四个步骤中完成:
返回整个承诺与您想要具体返回的文件 - 它将创建一个新的承诺在您的分支软重定义承诺 - 删除承诺并将变更移动到工作区域 手动点击文件返回并承诺他们下载所有其他文件在您的工作区域
您需要在终端中输入的内容:
git revert <commit_hash> git reset HEAD~1 git add <file_i_want_to_revert> && git commit -m'reverting file' git checkout.
好运
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别