【问题标题】:Git revert just some files in commit [duplicate]Git仅还原提交中的一些文件[重复]
【发布时间】:2016-07-12 03:03:24
【问题描述】:

我在 github 上几乎没有要更改的提交。所以在我之前的提交中,我更改了一些文件/文件夹,我只需要恢复其中一些的更改。最好的解决方案是什么。

【问题讨论】:

  • 这是回答你的问题还是我误解了? Reset or revert a specific file to a specific revision using Git?
  • 所以我有一个提交,其中包含对子模块的一个文件夹的更改。我需要通过在提交之前将其恢复为状态来修复它。
  • 这不是一个重复的问题。因为它被标记为重复,它不能再被回答。这个问题是关于撤消提交中的更改(真正的还原),而不仅仅是使用旧文件的副本进行新提交。见我的proposed answer as a comment

标签: git


【解决方案1】:

你可以使用git checkout:

git checkout HEAD~ -- file/to/revert

从上一次提交中暂存文件的一个版本。然后只需提交更改,您就可以开始了!当然,您可以将引用前一次提交的 HEAD~ 替换为提交的哈希、更远的祖先或任何您希望的“树状”对象。

【讨论】:

  • 感谢您的回答,我在史蒂夫回答下方添加了评论。
  • 似乎 git reset --soft HEAD^ 两次将我返回到以前的状态,我将所需的文件重置为以前的提交状态。
  • 这只是放弃对文件的更改。
【解决方案2】:

我在 github 上几乎没有要更改的提交。
我只需要为其中一些还原更改


几个选项:

  1. 从所需的提交中签出所需的文件

    git checkout <commit> path/to/file
    

  1. 交互式变基

    // X is the number of commits you wish to edit
    git rebase -i HEAD~X
    

压缩提交后 - 选择 e 以编辑提交。


【讨论】:

    猜你喜欢
    • 2020-08-27
    • 2021-06-14
    • 2011-12-19
    • 2011-07-18
    • 2013-07-31
    • 2016-11-01
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多