撤销 Git 提交中的部分文件

29

我在Github上有一些提交记录需要更改。因此,在以前的提交中,我更改了一些文件/文件夹,但我只需要撤销其中一些更改。最佳解决方案是什么。


4
这回答解决了你的问题吗?还是我误解了? 如何使用Git将特定文件重置或还原到特定版本?(原文链接:https://dev59.com/q3VC5IYBdhLWcg3wrDNd) - Steve
我有一个提交包含了子模块中一个文件夹的更改。我需要通过将其还原到提交之前的状态来修复它。 - Matrosov Oleksandr
1
这不是一个重复的问题。因为它被标记为重复,所以它不能再被回答了。这个问题是关于撤销提交中的更改(真正的还原),而不仅仅是从旧提交中复制文件并创建新提交。请参见我的建议答案作为评论 - Suncat2000
2个回答

49

您可以使用git checkout命令:

git checkout HEAD~ -- file/to/revert

您可以从先前的提交版本中制作文件的一个版本。然后只需提交更改即可!当然,您可以将 HEAD~(引用先前提交的)替换为提交哈希、更远的祖先或任何您希望的“树状”对象。


感谢您的回答,我已在Steve的回答下面添加了评论。 - Matrosov Oleksandr
似乎 git reset --soft HEAD^ 两次将我返回到先前的状态,我将需要重置的文件恢复到了先前的提交状态。 - Matrosov Oleksandr
这仅仅是放弃对文件的更改。 - ScottyBlades

5
我在Github上有几个提交记录需要更改。 我只需要撤销其中某些提交的更改。

几个选项:

  1. Checkout the desired files from the desired commit

    git checkout <commit> path/to/file
    

  1. Interactive rebase

    // X is the number of commits you wish to edit
    git rebase -i HEAD~X
    
一旦你压缩了提交记录 - 选择e编辑提交记录。

enter image description here



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接