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仅还原提交中的一些文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章