我正在将两个存储库合并到一个存储库中。
我将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
提交列表包括来自repo1和repo2的提交。手动选择它们会花费太多时间。
是否有办法自动挤压(或进行修复,丢弃消息)所有repo2自动提交,但保留“集成”的提交?
也许执行一个只包含当前分支中的提交的rebase是可疑的,但是我还没有找到如何实现的。
非常感谢。
这是一种挤压历史的开始的方式:
从“最新repo2提交”的父级开始运行rebase -i
:
git rebase -i 23d3762^
在操作中,将提交23d3762 Latest repo2 commit
的操作设置为edit
,然后保存并关闭git将倒带到23d3762
,并等待您采取措施
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
告诉git来完成交互式基础操作
git rebase --continue