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


当前回答

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

其他回答

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

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

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

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

git checkout eb917a1 YourFileName

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

git reset HEAD YourFileName
git checkout YourFileName

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

对于“a.txt”,“b.txt”,“c.txt”文件:

git revert -n <commit>(例如 git revert -n HEAD 要重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新

您可以使用 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>

我现在有相同的问题,我发现这个答案是最容易理解的(commit-ref 是您想要返回日志中的变更的 SHA 值):

git checkout [commit-ref] [filename]

这将把旧版本放在你的工作目录中,从那里你可以承诺它,如果你愿意。