【问题标题】:Test old commit in Git Repository在 Git 存储库中测试旧提交
【发布时间】:2019-04-17 10:03:17
【问题描述】:

我目前有一个项目(JavaScript),其中有一个错误,我确信我之前修复了它,现在我的问题是如何恢复到旧提交并在我的本地主机上检查该版本。

但我不想在我的 git 存储库中松动任何更改,我只想检查项目如何看待提交 X,我该如何管理。

我正在使用 gitkraken 作为 gui。

【问题讨论】:

    标签: git git-revert gitkraken


    【解决方案1】:
    • 确保没有未提交的更改;如有必要,提交或隐藏它们
    • 在您当前的 HEAD 处创建一个新分支(使用 Branch 按钮)
    • 搜索您要查看的提交
    • 右击提交,选择Reset <branchname> to this commit > Hard - discard all changes。这会将您刚刚创建的分支重置为此提交。
    • 你回到了过去。测试并检查您需要做的一切。如果你想回到现在,只要看看你原来的分支。

    编辑: 还有更简单的方法!

    • 确保没有未提交的更改;如有必要,提交或隐藏它们
    • 搜索您要查看的提交
    • 右击提交,选择Create branch here。输入分支名称。这将在此提交处创建一个分支。
    • 双击查看新创建的分支。
    • 你回到了过去。测试并检查您需要做的一切。如果你想回到现在,只要看看你原来的分支。

    【讨论】:

    • 一个好的gitkraken 答案!我看到 gitkraken 不只是 checkout 提交。
    • 非常感谢,这是解决此类问题的好“做法”吗?
    • 是的。在 git 中创建分支非常便宜,因此创建一些在存储库的历史记录中移动是完全合法的。通常建议在执行可能具有破坏性的操作(如变基或硬重置)之前创建备份分支。话虽如此,为此目的创建分支绝不是必要。当您通过命令行使用 git 时,您可以使用 git checkout <commit-id> 直接检查提交;虽然这会导致分离的 HEAD 状态。然而,在 gitkraken 中,你总是需要使用分支。
    【解决方案2】:

    如果您不确定何时引入/修复错误,您可以使用 git 的 bisect 方法:https://git-scm.com/docs/git-bisect

    git bisect start
    git bisect bad COMMIT_KNOWN_TO_FAIL
    git bisect good COMMIT_KNOWN_TO_PASS
    

    然后git会在中间选择一个commit。您可以进行检查,具体取决于您调用的测试结果:

     git bisect good
    

    如果测试通过并且

     git bisect bad
    

    如果测试失败。

    如果测试失败,git 会选择另一个提交给前一个good,如果测试通过,git 选择另一个提交。

    由于您正在寻找问题dis何时出现,因此您可能需要在继续时切换“好”和“坏”的含义......

    当您识别出 malicios 提交调用时

    git bisect reset
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      相关资源
      最近更新 更多