【问题标题】:Locally revert commit from cloned repository/reset all changes after specific commit从克隆的存储库本地恢复提交/在特定提交后重置所有更改
【发布时间】:2019-03-26 19:23:05
【问题描述】:

我已经克隆了存储库并转到了分支developer (git checkout developer)。我想在本地恢复提交(使用 SHA 提交:2403d2547f9183531bbd81672d887186bba34579),有人制作、推送并合并到分支 developer。我不想更改存储库上的任何内容,只是在我的机器上本地更改。我怎样才能恢复这个?

【问题讨论】:

    标签: git gitlab git-checkout git-revert


    【解决方案1】:

    只需执行git revert,或您想做的任何其他事情,不要推动更改。

    默认情况下,您在 git 存储库中所做的任何事情都是在本地完成的,您需要使用 push 命令来推送更改。所以只做改变,不要做git push

    如果您想恢复特定提交并保留其他所有内容,您可以使用git revert commit_sha

    但在这种情况下,看起来您可能真正想要的是“还原”特定提交及其之后的所有提交。在这种情况下,如果您不想推送它(例如,您只想编译特定版本的代码,或者对该特定版本进行一些调试),您可能需要使用git reset --hard commit_sha^,它将“go返回“从commit_sha 之前的状态,或git reset --hard commit_sha 返回到确切的commit_sha 的状态,但仍包括此提交。

    【讨论】:

    • 但它如何知道我想恢复到哪个版本?是否有机会使用 SHA 2403d2547f9183531bbd81672d887186bba34579 恢复提交?
    • git revert commit-sha 应该可以工作。在您的情况下,git revert 2403d2547f9183531bbd81672d887186bba34579.. 请注意,它将创建一个还原提交,而不是删除现有的提交。
    • 不,我试过了:git revert 2403d2547f9183531bbd81672d887186bba34579 得到了fatal: bad object 2403d2547f9183531bbd81672d887186bba34579
    • 这意味着在您的存储库克隆中不存在使用此 sha 提交的内容。确保您在正确的分支中,您可以使用 git log 查看提交历史记录并从那里复制 sha。
    • git revert 将尝试仅恢复一个特定的提交。如果由此产生任何冲突,您可能需要解决这些冲突。在这种情况下,您真正​​想要的是git reset,它允许您“返回”到指定提交的状态。 IU 将通过信息更新答案。
    猜你喜欢
    • 2017-05-28
    • 2021-01-09
    • 2012-05-03
    • 1970-01-01
    • 2013-11-06
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    相关资源
    最近更新 更多