1

我正在尝试回到我正在处理的分支上的另一个日期。(比如 3 天前)我已经创建了一个我已经更改的文件的补丁,所以我不介意它是否会被覆盖。

提前致谢,

4

2 回答 2

3

这是您可以将代码签出到您及时做出的先前提交的方式。

  1. git log查看您过去的所有提交并选择您要恢复的提交
  2. 复制您要恢复的哈希值(即aefd2efc660f4gb2fa2d7r1ef73b3z4e2b4498e5
  3. git checkout aefd2efc660f4gb2fa2d7r1ef73b3z4e2b4498e5
于 2013-07-20T19:58:02.260 回答
3

您只需要查看您的 git 日志并获取您想要提交的 sha 哈希并执行 git checkout。

在您的情况下,您的 git log 需要关注发生更改的时间,例如 3 天前。所以像下面这样的东西会帮助你。

$git log --pretty=format:"%h - %an, %ar : %s"

会给出这样的东西

$387820f - var_j, 25 hours ago : Rust Lessons: variables
$72a4abc - var_j, 25 hours ago : Rust Lessons: loops
$f272f95 - var_j, 25 hours ago : rust lessons: hello world added

进而,

$git checkout 387820f

这将分离头并将其移动到特定状态,因此工作副本也将相应更新。

如果您真的想回到过去,请考虑

$git reset --soft <commit_hash>

git 重置 --soft

完全不触及索引文件或工作树(但将头部重置为 ,就像所有模式一样)。正如 git status 所说,这会使您所有更改的文件都“提交更改”。

但要小心使用 git reset,它可能会造成损坏。阅读文档并决定您需要什么。

于 2013-07-20T20:08:22.460 回答