Git修复现有提交历史记录

Git修复现有提交历史记录,git,gitlab,Git,Gitlab,我有一个批处理exe,它为所有数据库对象编写脚本,然后自动提交到git存储库中 出于某种原因,我已经修复了,实际上我有这样的历史: 提交1:文件sampleStoredProcedure.sql…已添加 提交2:文件sampleStoredProcedure.sql…已修改 提交3:文件sampleStoredProcedure.sql…已删除 提交4:添加了文件sampleStoredProcedure.sql 提交5:文件sampleStoredProcedure.sql…已删除 提交6:

我有一个批处理exe,它为所有数据库对象编写脚本,然后自动提交到git存储库中

出于某种原因,我已经修复了,实际上我有这样的历史:

  • 提交1:文件sampleStoredProcedure.sql…已添加
  • 提交2:文件sampleStoredProcedure.sql…已修改
  • 提交3:文件sampleStoredProcedure.sql…已删除
  • 提交4:添加了文件sampleStoredProcedure.sql
  • 提交5:文件sampleStoredProcedure.sql…已删除
  • 提交6:添加了文件sampleStoredProcedure.sql
  • 提交7:文件sampleStoredProcedure.sql…已修改
在提交6时,文件在逻辑上与提交4不同 但如果我显示文件历史记录,我什么也看不到,因为该文件是git系统的新文件

有办法解决这一混乱局面吗

我祝愿这段历史:

  • 提交1:文件sampleStoredProcedure.sql…已添加
  • 提交2:文件sampleStoredProcedure.sql…已修改
  • 提交3:文件sampleStoredProcedure.sql…已删除--删除此文件
  • 提交4:文件sampleStoredProcedure.sql…已添加--设置为提交2的更改
  • 提交5:文件sampleStoredProcedure.sql…已删除-删除此文件
  • 提交6:文件sampleStoredProcedure.sql…已添加--设置为提交4的更改
  • 提交7:文件sampleStoredProcedure.sql…已修改
感谢您的支持

您可以使用压缩已删除并重新添加文件的提交

我建议在执行下一步之前备份您的存储库。

  • 获取“提交1”的引用,例如f79c595bce675cf6109ce9c7d47774a55a9a247
  • 运行git rebase--interactive
  • 您应该看到包含以下内容的文件:
  • 将再次添加文件的所有行的
    pick
    更改为
    fixup
    ,即使用提交消息“…added”
  • 保存文件
  • 将打开新文件,您可以在其中编辑新提交的提交消息(如果需要)
  • 如果有多个提交,并且提交消息的格式都相同,则可以在编辑器中使用宏或脚本来查找所有相关的提交。作为一个例子,下面是我在Vim中的实现方式:

  • 使用Vim
    GIT\u EDITOR=Vim GIT-rebase--interactive
    启动交互式rebase
  • 类型:
    qw/添加^dwifixup jq:%normal@w
  • 使用
    :wq
    保存并退出

  • 尝试比较提交4和3,结果如何?@Hoshani比较4和3 sampleStoredProcedure.sql是一个新文件,提交1/2/3不是文件历史记录的一部分我的repo在最大的数据库中有2800多个对象,我有许多数据库repo存在相同的问题。根据你的知识,我可以尝试一些更自动的方法。如果我能够根据文件名查看以前提交的历史记录就足够了。我不确定查看文件历史记录是什么意思。你的意思是用git责备你还是用什么命令?酷。我想不出其他方法来做你想做的事。我唯一的其他建议是使用
    fixup
    而不是
    squash
    ,这样您就不必手动编辑提交消息,也不必编写脚本或宏来自动在交互式重新基址中查找“添加的”提交。将在答案中添加一个示例Vim宏。
    pick f79c595 File sampleStoredProcedure.sql ...added
    pick 141asd1 File sampleStoredProcedure.sql ...modified
    pick 6d2b123 File sampleStoredProcedure.sql ...deleted
    pick asd123a File sampleStoredProcedure.sql ...added