Git仅还原提交中的一些文件[重复]

Posted

技术标签:

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

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

【问题讨论】:

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

你可以使用git checkout:

git checkout HEAD~ -- file/to/revert

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

【讨论】:

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

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


几个选项:

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

    git checkout <commit> path/to/file
    

    交互式变基

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

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


【讨论】:

以上是关于Git仅还原提交中的一些文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将旧更改移出主分支 [重复]

更改 Git 中的旧提交 [重复]

如何“取消还原”已还原的 Git 提交?

忽略 Git 提交 [重复]

忽略或跳过 Git 上的某些提交 [重复]

如何修复还原的 git 提交?