我如何将修改的文件转换为以前的修订,在一个特定的 commit hash (我通过 git log 和 git diff 确定)?
当前回答
对我来说,没有一个答案看起来很清楚,所以我想添加我的,看起来很容易。
我有一个承诺 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 checkout master~5 image.png
这假设你在主分支,你想要的版本是5个承诺回来。
要转到文件的先前命令版本,请获取命令号,然后说EB917a1
git checkout eb917a1 YourFileName
如果你只需要回到最后的承诺版本
git reset HEAD YourFileName
git checkout YourFileName
这只会带你到文件的最后一个承诺状态。
显然,有人需要在 git 上写一本可理解的书,或者 git 需要在文档中更好地解释。
cd <working copy>
git revert master
他们会放弃最后的承诺,似乎正在做。
伊恩
将文件转换为一个特定的承诺
git checkout Last_Stable_commit_Number - 文件名
2. 将文件转换为一个特定的分支
git checkout branchName_Which_Has_stable_Commit 文件名称
我现在有相同的问题,我发现这个答案是最容易理解的(commit-ref 是您想要返回日志中的变更的 SHA 值):
git checkout [commit-ref] [filename]
这将把旧版本放在你的工作目录中,从那里你可以承诺它,如果你愿意。
推荐文章
- 如何将git配置存储为存储库的一部分?
- 如何修改GitHub拉请求?
- 如何在Github和本地删除最后n次提交?
- 我如何调试git/git-shell相关的问题?
- 错误:无法使用rebase进行拉取:您有未分阶段的更改
- Git隐藏未缓存:如何把所有未分期的变化?
- 真实的恶魔
- 如何从另一个分支获得更改
- Git:权限被拒绝(publickey)致命-无法从远程存储库读取。克隆Git存储库时
- git reflog和log有什么区别?
- git推挂在Total line之后
- 重命名git子模块
- 结合Git存储库的前两次提交?
- Xcode 6 gitignore文件应该包括什么?
- 我如何从现有回购的分支创建一个新的GitHub回购?