【问题标题】:git checkout doesn't remove the newly added filesgit checkout 不会删除新添加的文件
【发布时间】:2021-03-03 04:28:03
【问题描述】:

我想将我的 repo 恢复为之前提交的确切状态。然后进行新的提交(作为还原的一部分)并推送到远程。我不想使用git push -f,所以我不想重写提交。我想使用一个新的提交并撤消多项更改。

所以我跑了git checkout [HASH] -- .

但我意识到这个命令并不能完全恢复。在后面的提交中添加的文件实际上并没有被删除。

我究竟如何在 git 中还原?

【问题讨论】:

    标签: git version-control version


    【解决方案1】:

    如果您的本地 git 足够新(2.27+),git restore 是要使用的命令:

    git restore [HASH]
    

    如果由于某种原因,您无法将本地 git 升级到足够新的版本,
    使用git read-tree

    git read-tree [HASH]
    

    【讨论】:

    • 要在旧 Git 中获得git restore <hash> 的效果,请使用git read-tree -u <hash>
    【解决方案2】:

    它的工作原理与git reset --hard 相同,但有一个重要 区别,git checkout工作目录 安全,所以它不会覆盖您的工作目录中的现有更改。

    如果您希望撤消/恢复提交,您可以使用要恢复的提交中的commit hash 执行以下操作:

    git revert <commit hash>
    

    但是你也可以清除你的working directory然后你可以做git checkout &lt;commit hash&gt;

    【讨论】:

      猜你喜欢
      • 2019-02-02
      • 1970-01-01
      • 2023-01-31
      • 2020-05-19
      • 2023-04-02
      • 2016-09-09
      • 1970-01-01
      • 2011-01-02
      相关资源
      最近更新 更多