【问题标题】:Git revert is overwriting my filesGit revert 正在覆盖我的文件
【发布时间】:2013-06-07 12:37:37
【问题描述】:

假设我在本地对文件进行了一堆更改,然后将这些更改添加到暂存索引中,然后提交它们。然后我意识到,实际上,我犯了一些错误,我想快速撤消整个提交并回到我提交之前的位置(即,我的更改从 repo 中返回并返回到索引中)。

我尝试执行git revert SHA,这确实撤消了我最近的提交,但它也完全覆盖了我的所有文件并将它们恢复到原始状态。

如何在不覆盖更改的情况下还原提交?

【问题讨论】:

    标签: git commit git-reset git-revert


    【解决方案1】:

    您正在寻找git reset --soft <last commit you want to keep>

    但请注意,与revert 不同,这将撤消您指定的提交之后的所有提交(例如,如果您有A-B-C-D (HEAD) 而您有git reset --soft B,则CD 都将被撤消,它们的两个更改都保留在索引中)。


    当然,另一种选择是不撤消您的上一次提交,而只是修改它以消除错误。您可以通过git commit --amend 执行此操作,其作用与git commit 类似,只是它不是创建新提交,而是修改(修改)最新的现有提交。

    git commit -m "this commit has mistake(s)"
    ...edit the file(s) with mistake(s)...
    git add <file>
    git commit --amend -m "same commit, no mistake(s)"
    

    【讨论】:

      猜你喜欢
      • 2019-03-09
      • 2021-03-05
      • 2021-02-21
      • 1970-01-01
      • 2015-02-13
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 2022-07-17
      相关资源
      最近更新 更多