我如何将修改的文件转换为以前的修订,在一个特定的 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 上写一本可理解的书,或者 git 需要在文档中更好地解释。
cd <working copy>
git revert master
他们会放弃最后的承诺,似乎正在做。
伊恩
但是,请注意, git checkout./foo 和 git checkout HEAD./foo 并不完全相同; 案例在点:
$ echo A > foo
$ git add foo
$ git commit -m 'A' foo
Created commit a1f085f: A
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 foo
$ echo B >> foo
$ git add foo
$ echo C >> foo
$ cat foo
A
B
C
$ git checkout ./foo
$ cat foo
A
B
$ git checkout HEAD ./foo
$ cat foo
A
(第二个添加步骤是指数中的文件,但它不会被承诺。
Git checkout./foo 是指从指数中转向./foo 路径; 添加 HEAD 指示 Git 将指数中的路径转向其 HEAD 修订之前。
要转到文件的先前命令版本,请获取命令号,然后说EB917a1
git checkout eb917a1 YourFileName
如果你只需要回到最后的承诺版本
git reset HEAD YourFileName
git checkout YourFileName
这只会带你到文件的最后一个承诺状态。
git revert <hash>
它听起来像你认为 git revert 只会影响最新的承诺。
它不会解决你的问题,如果你想转换一个更改在一个特定的文件,并承诺更改超过该文件。
如果您在最后的命令中犯下错误的文件,请遵循指示:
开源树,改变这个承诺
此分類上一篇
更改行,并找到你的承诺,错误的文件发送为承诺
此分類上一篇
你可以看到你的更改列表在这个承诺选择它,然后点击... 按钮右侧... 点击逆文件,然后你可以看到它在文件状态选项卡在左侧下方然后点击不步骤:
此分類上一篇
打开您的视觉工作室代码,然后返回,完成您的删除文件之后,您可以在源树上看到您的最后一个承诺的结果。
此分類上一篇
推荐文章
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?
- 是否可以在不先签出整个存储库的情况下进行稀疏签出?
- 如何移除SSH密钥?