我如何将修改的文件转换为以前的修订,在一个特定的 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 -- foo

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

git checkout HEAD^ foo

一次重新审查等。

我必须在这里插入EasyGit,这是一个插槽,使Git更接近新人,而不会混淆经验丰富的用户。

此分類上一篇: foo/bar foo/baz

首页 > 首页 > 目标文件

git reset HEAD path_to_file

第二次检查该文件

git checkout -- path_to_file
git log --oneline  // you see commits, find commit hash to which you want reset
git diff y0urhash src/main/.../../YourFile.java   // to see difference
git reset y0urhash src/main/.../../YourFile.java   // revert to y0urhash commit
git status                                        // check files to commit
git commit -m "your commit message"
git push origin

如果您想要将文件转换为以前的承诺(并且您想要转换已承诺的文件),您可以使用

git checkout HEAD^1 path/to/file

git checkout HEAD~1 path/to/file

然后,只是步行,并采取“新”版本。

武装着一个承诺可以有两个父母在合并的情况下,你应该知道,头1是第一个父母,头1是第二个父母。

或者它会工作,如果树上只有一个父母。