如何压缩将另一个仓库集成到分支中的旧提交?

问题描述 投票:0回答:1

我正在将两个存储库合并到一个存储库中。

我将repo2集成到repo1的分支中,保留了repo2的所有历史记录。之后,我进行了额外的提交以完成代码集成。

问题是,由于提交的次数非常多,现在我决定不再保留repo2的历史记录。因此,我尝试执行交互式变基。这里的问题是repo2的历史记录包含可追溯到一年前的提交。

已在新分支中添加的提交看起来像这样:

680a4b3  Integration          2 days ago
...
985d7ac  Integration          6 days ago    
23d3762  Latest repo2 commit  2020‑04‑20
...
23df1e4  First repo2 commit   2019‑05‑01

当我尝试执行交互式基础时,要回到第一个repo2提交:

git rebase 23df1e4 ---interactive

提交列表包括来自repo1repo2的提交。手动选择它们会花费太多时间。

是否有办法自动挤压(或进行修复,丢弃消息)所有repo2自动提交,但保留“集成”的提交?

也许执行一个只包含当前分支中的提交的rebase是可疑的,但是我还没有找到如何实现的。

非常感谢。

git merge git-merge rebase git-rebase
1个回答
0
投票

这是一种挤压历史的开始的方式:

  1. 从“最新repo2提交”的父级开始运行rebase -i

    git rebase -i 23d3762^
    
  2. 在操作中,将提交23d3762 Latest repo2 commit的操作设置为edit,然后保存并关闭git将倒带到23d3762,并等待您采取措施

  3. squash repo2的历史:

    # use 'reset --soft' to go back to First commit,
    # while keeping the complete delta in the staging area :
    git reset --soft 23df1e4   # <- use id of "First commit" here
    git commit
    
  4. 告诉git来完成交互式基础操作

    git rebase --continue
    
© www.soinside.com 2019 - 2024. All rights reserved.