我如何将修改的文件转换为以前的修订,在一个特定的 commit hash (我通过 git log 和 git diff 确定)?
当前回答
下面是Rebase如何工作:
git checkout <我的分支> git rebase 主 git checkout 主 git merge <我的分支>
假设你有
───────────────────
... 查看你想向大师分支申请的变革分支。 退缩命令从 <我的分支>(不在大师中找到)采取命令,并将其重新应用到大师的头部。 换句话说,在 <我的分支>中的第一个命令的父母不再是大师历史中的先前命令,而是当前大师的头部。
git rebase master <my branch>
这可能更容易记住这个命令,因为“基础”和“修改”分支都明确。
历史的最终结果是:
────────────────────
git checkout master
git merge <my branch>
...做一个快速前进的合并,将所有 <我的分支> 变更应用于主人. 没有这个步骤,退缩承诺不会添加到主人. 最终结果是:
───────────────────
git branch -d <my branch>
其他回答
这对我工作:
git checkout <commit hash> file
接下来的改变:
git commit -a
使用 git log 获取特定版本的 hash 密钥,然后使用 git checkout <hashkey>。
注意:不要忘了在最后一个之前输入哈希,最后一个哈希标记了您的当前位置(头部)并不会改变任何东西。
将文件转换为一个特定的承诺
git checkout Last_Stable_commit_Number - 文件名
2. 将文件转换为一个特定的分支
git checkout branchName_Which_Has_stable_Commit 文件名称
你可以在四个步骤中完成:
返回整个承诺与您想要具体返回的文件 - 它将创建一个新的承诺在您的分支软重定义承诺 - 删除承诺并将变更移动到工作区域 手动点击文件返回并承诺他们下载所有其他文件在您的工作区域
您需要在终端中输入的内容:
git revert <commit_hash> git reset HEAD~1 git add <file_i_want_to_revert> && git commit -m'reverting file' git checkout.
好运
对我来说,没有一个答案看起来很清楚,所以我想添加我的,看起来很容易。
我有一个承诺 abc1 之后我做了几个(或一个修改)到一个文件 file.txt。
1.git checkout file.txt : 这将删除本地变更,如果你不需要它们
2.git checkout abc1 file.txt : 这将使您的文件到您想要的版本
3.git commit -m “Restored file.txt to version abc1” : 这将承诺您的转换。
git push : 这将把一切推到远程存储库中
在步骤2和3之间,当然,你可以做 git 状态来了解正在发生的事情。 通常你应该看到 file.txt 已经添加了,这就是为什么不需要添加 git。
推荐文章
- 如何从远程Git存储库中提取并覆盖本地存储库中的更改?
- Github:导入上游分支到fork
- Git单次修订的日志
- Git在不改变提交时间戳的情况下进行改基
- VS 2017 Git本地提交数据库。每次提交时锁定错误
- 如何在过去的一些任意提交之间注入一个提交?
- 从GitHub克隆项目后拉git子模块
- GitHub上的分叉和克隆有什么区别?
- 递归地按模式添加文件
- 我如何使用notepad++(或其他)与msysgit?
- 如何将现有的解决方案从Visual Studio 2013添加到GitHub
- Git存储库中的悬垂提交和blob是什么?它们来自哪里?
- 我如何简单地从我最新的git提交创建一个补丁?
- Git显示“警告:永久添加到已知主机列表”
- 我如何检索一个回购的远程git地址?