在提交历史记录中追加git提交

在提交历史记录中追加git提交,git,github,rebase,Git,Github,Rebase,我在Dev分支中有一个commit(让我们称之为ComV2),它是一个月前完成的,并且是10 commit。但是,我需要基于commit ComV2进行构建,但需要对该提交中的一个文件进行一些更改 到目前为止,我所尝试的: Checkedout ComV2-这导致头部分离(这是正常的) 在commit ComV2中对文件进行了更改 隐藏这些变化 为commit ComV1启动了git rebase,类型为“edit”(编辑)(ComV1比ComV2早一次提交) 从藏匿处取出零钱 对弹出的隐藏更改

我在Dev分支中有一个commit(让我们称之为ComV2),它是一个月前完成的,并且是10 commit。但是,我需要基于commit ComV2进行构建,但需要对该提交中的一个文件进行一些更改

到目前为止,我所尝试的:

  • Checkedout ComV2-这导致头部分离(这是正常的)
  • 在commit ComV2中对文件进行了更改
  • 隐藏这些变化
  • 为commit ComV1启动了git rebase,类型为“edit”(编辑)(ComV1比ComV2早一次提交)
  • 从藏匿处取出零钱
  • 对弹出的隐藏更改进行了提交。让我们称之为commit ComV2.1
  • git是否重新设置了基址--是否继续
  • 在新分支中签出了ComV2.1。我们把它叫做TempBranch
  • 切换回Dev分支-这导致将头部重新附加到最新提交
  • 将临时分支合并到Dev中
  • 问题:

    这一合并导致Dev分支中最新提交的更改被插入commit ComV2的其余文件中,我不希望这些文件被插入,而且ComV2.1在历史上不在ComV2.1之后。根据git日志,这是最新的提交。我还希望将此更改的文件添加到ComV2.1之后的提交中

    问题:

  • 如何使ComV2.1在ComV2之后立即显示,并且除了在ComV2.1中修改的文件外,代码与ComV2完全相同
  • 这样做是一种好的做法吗?(我是唯一一个参与这个项目的人)

  • 重写像
    Dev
    这样的公共共享分支的历史记录通常不是一个好主意。这不是一个好主意的原因是,它会使签出此分支并正在使用它的任何其他人感到困惑

    更安全的选择是通过以下方式提交
    git revert
    ComV2commit:

    git revert <SHA-1 for ComV2>
    
    git还原
    

    然后,做任何你需要的修补程序。此选项在
    Dev
    分支的
    头上添加一个或多个新提交,并且对于所有共享分支都是安全的。

    但是,最新的更改将显示为ComV2.1,历史上ComV2.1之后发生的更改将不会出现在ComV2.1中,而ComV2.1现在是最新的提交。如果不重写历史,您将无能为力。事实上,您的代码库中有一个bug已经有一段时间了。然后你把它修好了;这个故事没有什么不对或不寻常的地方。您可以尝试交互式rebase,但如果在
    ComV2
    和分支头之间有任何合并提交,则可能必须重新进行合并。如果没有其他人正在使用或曾经见过
    Dev
    ,则可以尝试
    git rebase-i HEAD~15
    ,然后将
    ComV2
    提交的
    pick
    更改为
    edit
    。然后,当重基暂停时,您可以修复该错误。