我如何将修改的文件转换为以前的修订,在一个特定的 commit hash (我通过 git log 和 git diff 确定)?
当前回答
如果你曾经有一个版本的文件在承诺 $ A,然后后来做了两个不同的承诺 $ B 和 $ C (所以你正在看到的是第三个字符串的文件),如果你说“我想要返回第一个”,你真的意味着吗?
如果你想摆脱第二个和第三个 iteration 的变化,这是非常简单的:
$ git checkout $A file
命令要求“我想检查由命令A记录的状态的文件”。
另一方面,你指的是摆脱改变的第二个 iteration(即承诺 $B)引入,同时保持什么承诺 $C 做到文件,你会想转换 $B。
$ git revert $B
請注意,任何人創建的承諾 $ B 可能沒有非常規律,並可能在同一承諾中進行了完全無關的變化,而這個逆轉可能會觸摸其他檔案,而不是檔案,你會看到有害的變化,所以你可能想仔細檢查結果,然後做到這一點。
其他回答
你可以在四个步骤中完成:
返回整个承诺与您想要具体返回的文件 - 它将创建一个新的承诺在您的分支软重定义承诺 - 删除承诺并将变更移动到工作区域 手动点击文件返回并承诺他们下载所有其他文件在您的工作区域
您需要在终端中输入的内容:
git revert <commit_hash> git reset HEAD~1 git add <file_i_want_to_revert> && git commit -m'reverting file' git checkout.
好运
执行下列命令,进行软重新设置,变更到您的本地。
git reset --soft HEAD^1
查看您此前承诺的文件的状态,到达您的本地,然后进行更改。
git status
承诺并按下文件后进行更改. 未来的承诺历史错误的文件将不会显示
在从起源中提取之前,始终保持喷射(可选步骤)
git remote prune origin
我必须在这里插入EasyGit,这是一个插槽,使Git更接近新人,而不会混淆经验丰富的用户。
此分類上一篇: foo/bar foo/baz
这是一个非常简单的步骤. 检查文件到我们想要的承诺ID,这里一个承诺ID之前,然后只是 git承诺修改,我们已经完成了。
# git checkout <previous commit_id> <file_name>
# git commit --amend
如果我们想把任何文件带到承诺的顶部的任何先前承诺 ID,我们可以轻松地做到。
使用 git log 获取特定版本的 hash 密钥,然后使用 git checkout <hashkey>。
注意:不要忘了在最后一个之前输入哈希,最后一个哈希标记了您的当前位置(头部)并不会改变任何东西。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别