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


当前回答

这里是我的路。

在 Android Studio 中,打开文件。

(b) git -> 显示历史,找到我要转向的以前的承诺。

c) git checkout commit_id file_path

其他回答

这是一个非常简单的步骤. 检查文件到我们想要的承诺ID,这里一个承诺ID之前,然后只是 git承诺修改,我们已经完成了。

# git checkout <previous commit_id> <file_name>
# git commit --amend

如果我们想把任何文件带到承诺的顶部的任何先前承诺 ID,我们可以轻松地做到。

git checkout -- foo

這將重新安裝 foo 到 HEAD. 您也可以:

git checkout HEAD^ foo

一次重新审查等。

至于 git v2.23.0 有一个新的 git 恢复方法,这应该是由 git checkout 负责的一部分(即使接受的答案提到, git checkout 是相当困惑的)。

这个命令的默认行为是恢复一个工作树的状态,内容来自源参数(在您的情况下将是一个承诺哈希)。

因此,基于Greg Hewgill的答案(假设承诺哈希是c5f567)命令会看起来如下:

git restore --source=c5f567 file1/to/restore file2/to/restore

或者,如果你想恢复一个承诺的内容之前 c5f567:

git restore --source=c5f567~1 file1/to/restore file2/to/restore

要转到文件的先前命令版本,请获取命令号,然后说EB917a1

git checkout eb917a1 YourFileName

如果你只需要回到最后的承诺版本

git reset HEAD YourFileName
git checkout YourFileName

这只会带你到文件的最后一个承诺状态。

对我来说,没有一个答案看起来很清楚,所以我想添加我的,看起来很容易。

我有一个承诺 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。