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


当前回答

您可以使用 diff 命令快速查看文件中的更改:

git diff <commit hash> <filename>

然后将特定文件转换为该承诺,使用重新设置命令:

git reset <commit hash> <filename>

您可能需要使用 --hard 选项,如果您有本地修改。

管理路点的好工作流是使用标签清晰地标记时间线中的点,我无法完全理解你的最后一句话,但你可能想要的是从前一个点分开一个分支。

git checkout <commit hash>
git checkout -b <new branch name>

然后,你可以放弃这个对你的主要线,当你准备合并这些变化:

git checkout <my branch>
git rebase master
git checkout master
git merge <my branch>

其他回答

你可以在四个步骤中完成:

返回整个承诺与您想要具体返回的文件 - 它将创建一个新的承诺在您的分支软重定义承诺 - 删除承诺并将变更移动到工作区域 手动点击文件返回并承诺他们下载所有其他文件在您的工作区域

您需要在终端中输入的内容:

git revert <commit_hash> git reset HEAD~1 git add <file_i_want_to_revert> && git commit -m'reverting file' git checkout.

好运

执行下列命令,进行软重新设置,变更到您的本地。

git reset --soft HEAD^1

查看您此前承诺的文件的状态,到达您的本地,然后进行更改。

 git status

承诺并按下文件后进行更改. 未来的承诺历史错误的文件将不会显示

在从起源中提取之前,始终保持喷射(可选步骤)

 git remote prune origin

首页 > 首页 > 目标文件

git reset HEAD path_to_file

第二次检查该文件

git checkout -- path_to_file
git checkout -- foo

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

git checkout HEAD^ foo

一次重新审查等。

有趣的是, git checkout foo 如果工作副本在一个名为 foo 的目录中工作,则不会工作;但是, git checkout HEAD foo 和 git checkout./foo 都会:

$ pwd
/Users/aaron/Documents/work/foo
$ git checkout foo
D   foo
Already on "foo"
$ git checkout ./foo
$ git checkout HEAD foo