我使用子树合并策略将外部库合并到我的项目中.我没有将--squash选项传递给'git merge',所以我现在拥有整个库历史(这是巨大的)膨胀存储库.我如何追溯压缩合并?
我的情况是:
Z--Y--..--B--A
\
D---E---F---G master
Run Code Online (Sandbox Code Playgroud)
我想:
D---E---F---G master
Run Code Online (Sandbox Code Playgroud)
其中E是包含合并的提交.
我想解决方案将涉及'git rebase',但我不确定如何在这种情况下正确使用它.
请记住,如果您已经发布了 E 或稍后在 master 中提交到远程,那么不要对它们进行 rebase,因为这会破坏其他人的代码,并且您也需要手动修复他们的存储库。
Rebase 创建新的修订版本,它不能神奇地修改现有版本(这就是它使用 SHA1 的原因,因此您可以确定您的提交包含生成此特定 SHA1 的内容并且未被修改)
但如果您准备好了,请继续我的示例。
git merge --squash library;git commitgit checkout mastergit rebase -i -p --onto lib-squash <sha1 old merge commit>git branch -D library和git branch -d lib-squash这给你留下了干净的历史记录,但你只是重写了历史记录,你需要使用 --force 标志进行推送,然后每个人都需要修复他们的存储库:
git fetchgit checkout mastergit reset --hard origin/master,假设您没有除远程存储库之外的其他本地提交不幸的是,我还没有找到有关分离历史提交而不影响未来提交的文章。
| 归档时间: |
|
| 查看次数: |
741 次 |
| 最近记录: |