如何压缩将另一个 repo 集成到分支中的旧提交?
How to squash old commits coming from integrating another repo into a branch?
我正在努力将两个存储库合并为一个存储库。
我将 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 自动提交,但保留 "Integration" 的吗?
也许可以执行一个只包含来自当前分支的提交的变基,但我还没有找到如何做到这一点。
非常感谢您。
这里有一个方法可以压缩历史的开端:
运行 rebase -i
从 "Latest repo2 commit" 的父级开始:
git rebase -i 23d3762^
在actions中,将commit 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完成交互式rebase
git rebase --continue
我正在努力将两个存储库合并为一个存储库。
我将 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 自动提交,但保留 "Integration" 的吗?
也许可以执行一个只包含来自当前分支的提交的变基,但我还没有找到如何做到这一点。
非常感谢您。
这里有一个方法可以压缩历史的开端:
运行
rebase -i
从 "Latest repo2 commit" 的父级开始:git rebase -i 23d3762^
在actions中,将commit
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完成交互式rebase
git rebase --continue