Git - 从历史记录中删除提交但保留代码
Git - Remove commit from history but lesve the code
我在 VS2019
上使用 git
我想知道是否有办法删除旧提交但始终保留最新代码。原因是当我处理一个大的变化时,我在检查每个小步骤后做了很多提交,但最后当我点击查看历史并需要搜索一个旧的提交来比较变化时,这很烦人。我想删除特定的提交但保留更改。这样,我在历史上只会看到发展过程中的主要里程碑。有办法吗??
您似乎需要 git 变基功能。
如果您知道要压缩多少次提交,您可以使用
git rebase -i HEAD~N
您也可以在交互模式下进行:
git rebase --interactive HEAD~N
请注意,如果合并已经推送的提交,下一次推送可能会遇到问题。
详情请见:https://www.internalpointers.com/post/squash-commits-into-one-git
您可以遵循类似于“Git better with fixups " from Atul Sharma
的工作流程
对于相同步骤的增量改进的提交,使用git commit --fixup small step
,它允许您"do a lot of commits after checking every small step"。
(在Git Extension in Visual Studio中可以看到)
但最后,您可以使用 git rebase --interactive --autosquash <First step commit>
清理所有这些小步骤(假设您还没有推送这些提交)
这样,您最终会得到一个更清晰的历史记录。
听起来在这些情况下,您正在开发一项新功能,在这种情况下,您应该使用分支+拉取请求方法进行开发。在拉取请求期间,您可以进行挤压合并。并非全部都在命令行中,但无论如何这可能是最好的。
如果您已经在功能分支中工作,那么我喜欢 的方法。
我在 VS2019
上使用 git我想知道是否有办法删除旧提交但始终保留最新代码。原因是当我处理一个大的变化时,我在检查每个小步骤后做了很多提交,但最后当我点击查看历史并需要搜索一个旧的提交来比较变化时,这很烦人。我想删除特定的提交但保留更改。这样,我在历史上只会看到发展过程中的主要里程碑。有办法吗??
您似乎需要 git 变基功能。
如果您知道要压缩多少次提交,您可以使用
git rebase -i HEAD~N
您也可以在交互模式下进行:
git rebase --interactive HEAD~N
请注意,如果合并已经推送的提交,下一次推送可能会遇到问题。
详情请见:https://www.internalpointers.com/post/squash-commits-into-one-git
您可以遵循类似于“Git better with fixups " from Atul Sharma
的工作流程对于相同步骤的增量改进的提交,使用git commit --fixup small step
,它允许您"do a lot of commits after checking every small step"。
(在Git Extension in Visual Studio中可以看到)
但最后,您可以使用 git rebase --interactive --autosquash <First step commit>
清理所有这些小步骤(假设您还没有推送这些提交)
这样,您最终会得到一个更清晰的历史记录。
听起来在这些情况下,您正在开发一项新功能,在这种情况下,您应该使用分支+拉取请求方法进行开发。在拉取请求期间,您可以进行挤压合并。并非全部都在命令行中,但无论如何这可能是最好的。
如果您已经在功能分支中工作,那么我喜欢