Git-从历史记录中删除提交但保留代码

时间:2020-06-19 05:18:50

标签: github commit

我在VS2019上使用git

我想知道是否有一种方法可以删除旧的提交,但始终保留最新的代码。原因是,当我进行较大的更改时,在检查完每个小步骤后我都会进行很多提交,但是最后,当我单击查看历史记录并需要搜索旧提交以比较更改时,这很烦人。我想删除特定的提交但保留更改。这样,我将在历史上仅看到发展进程的主要里程碑。有办法做到吗?

3 个答案:

答案 0 :(得分:0)

似乎您想要git rebase功能。

如果您知道要压缩的提交数量,可以使用

git rebase -i HEAD~N

您也可以以交互方式进行操作:

git rebase --interactive HEAD~N

请注意,如果您合并已经推送的提交,则下一次推送可能会遇到麻烦。

有关更多详细信息,请参见:https://www.internalpointers.com/post/squash-commits-into-one-git

答案 1 :(得分:0)

您可以遵循与Git better with fixups 中的“ Atul Sharma”类似的工作流程

对于那些对于 same 步骤而言是增量改进的提交,请使用git commit --fixup small step,它可以让您“在检查完每个小步骤之后进行很多提交”。

(您可以在Git Extension in Visual Studio中看到它)

但是最后,您可以使用git rebase --interactive --autosquash <First step commit>清理所有这些小步骤(假设您尚未推送这些提交)

那样,您最终将获得更清晰的历史记录。

答案 2 :(得分:0)

听起来像在这些情况下,您正在开发一项新功能,在这种情况下,您应该使用分支+拉动请求方法进行开发。在请求请求期间,您可以进行壁球合并。并非全部在命令行中,但是无论如何这可能都是最好的。

如果您已经在功能分支中工作,那么我喜欢VonC的方法。