据我所知,我确实以有条理的方式管理git。我提交了每个具体的更改,以便我可以随时恢复一点功能。在这个过程中,我在大约10天前添加了一个功能(提交#74fd458
),在那里我添加了一个二进制文件并对3个跟踪文件进行了更改。
之后我做了至少15次提交。
dfs4334
- 新提交15
2yu44m6
- 新提交14
...
47jc063
- 新提交1
74fd458
- 目标提交(现在似乎不需要)
560dfsf
- 旧提交1
lfg956d
- 旧提交2
...
现在我遇到了一种情况,那就是不需要特定的提交(阅读'功能')。事情很简单,打开一个提交可视化工具并删除那个特定提交中生成的那些特定行,删除那些已添加的二进制文件,然后就完成了。但是,你知道它很乱。
问:有什么方法可以保留我之后所做的所有更改,但是删除,还原或从分支中选择一个特定的提交?
PS。由于方案可以随时更改,因此可以在以后添加该特定功能。所以我不想完全从版本控制中删除该功能,我只是将这些功能放在一边,但要将它们放在某处,以便我可以随时将它们合并。
答案 0 :(得分:2)
有什么方法可以保留我之后做的所有更改,但删除,还原或从分支中选择一个特定的提交?
git revert
可能就是你要找的东西
来自文档:
还原一些现有提交
给定一个或多个现有提交,还原相关修补程序引入的更改,并记录一些记录它们的新提交
在您的情况下,原始提交和(让我说)还原提交都将成为项目历史的一部分。
如果需要,可以稍后恢复还原提交,即如果您需要再次应用原始提交。
有关详细信息,请参阅链接的文档。
答案 1 :(得分:0)
是的,有一种方法可以删除特定提交并保留后续提交:
git rebase -i HEAD~16
74fd458
,底部为最新dfs4334
)。 i
并删除要删除的提交(pick 74fd458
):wq
因此将删除提交74fd458
。
注意:如果存在冲突,您应该使用git add <filename>
和git rebase --continue