我如何将修改的文件转换为以前的修订,在一个特定的 commit hash (我通过 git log 和 git diff 确定)?
当前回答
对于“a.txt”,“b.txt”,“c.txt”文件:
git revert -n <commit>(例如 git revert -n HEAD 要重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新
其他回答
对于“a.txt”,“b.txt”,“c.txt”文件:
git revert -n <commit>(例如 git revert -n HEAD 要重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新
首页 > 首页 > 目标文件
git reset HEAD path_to_file
第二次检查该文件
git checkout -- path_to_file
这里的许多答案声称要使用 git reset... <file> 或 git checkout... <file> 但这样做,你会放弃每一个修改的 <file> 承诺后承诺你想转换。
如果你想重新转换一个承诺的单一文件的变更,就像 git revert 会做的,但只为一个文件(或说一个承诺文件的子组),我建议使用 git diff 和 git 应用的类似(与 <sha> = 承诺的哈希你想重新转换) :
git diff <sha>^ <sha> path/to/file.ext | git apply -R
基本上,它将首先产生与你想要逆转的变更相匹配的插件,然后逆转应用插件,以放下这些变更。
当然,它不会工作,如果逆转的线条是由 <sha1> 和 HEAD (冲突) 之间的任何承诺改变。
要转到文件的先前命令版本,请获取命令号,然后说EB917a1
git checkout eb917a1 YourFileName
如果你只需要回到最后的承诺版本
git reset HEAD YourFileName
git checkout YourFileName
这只会带你到文件的最后一个承诺状态。
如果您想要将文件转换为以前的承诺(并且您想要转换已承诺的文件),您可以使用
git checkout HEAD^1 path/to/file
或
git checkout HEAD~1 path/to/file
然后,只是步行,并采取“新”版本。
武装着一个承诺可以有两个父母在合并的情况下,你应该知道,头1是第一个父母,头1是第二个父母。
或者它会工作,如果树上只有一个父母。
推荐文章
- 如何配置Mac OS X术语,使git有颜色?
- Visual Studio Code: .git文件夹/文件隐藏
- “node_modules”文件夹应该包含在git存储库中吗
- 为什么git-rebase给了我合并冲突,而我所做的只是压缩提交?
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?