我如何将修改的文件转换为以前的修订,在一个特定的 commit hash (我通过 git log 和 git diff 确定)?


当前回答

将文件转换为一个特定的承诺

git checkout Last_Stable_commit_Number - 文件名

2. 将文件转换为一个特定的分支

git checkout branchName_Which_Has_stable_Commit 文件名称

其他回答

下面是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./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 修订之前。

如果您在最后的命令中犯下错误的文件,请遵循指示:

开源树,改变这个承诺

此分類上一篇

更改行,并找到你的承诺,错误的文件发送为承诺

此分類上一篇

你可以看到你的更改列表在这个承诺选择它,然后点击... 按钮右侧... 点击逆文件,然后你可以看到它在文件状态选项卡在左侧下方然后点击不步骤:

此分類上一篇

打开您的视觉工作室代码,然后返回,完成您的删除文件之后,您可以在源树上看到您的最后一个承诺的结果。

此分類上一篇

这里的许多答案声称要使用 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 (冲突) 之间的任何承诺改变。

使用 git log 获取特定版本的 hash 密钥,然后使用 git checkout <hashkey>。

注意:不要忘了在最后一个之前输入哈希,最后一个哈希标记了您的当前位置(头部)并不会改变任何东西。