如何压缩所有提交历史记录并推入另一个远程存储库?

时间:2017-06-20 22:10:30

标签: git github rebase squash

经过多次努力,我无法弄明白。我有两个本地分支mastertests。我有两个相应的远程分支,具有相同的仓库,origin/masterorigin/tests。我有另一个远程分支public/master。我在本地master和远程origin/master上推送了一些提交历史记录。现在,我想压缩origin/master的所有提交并推入远程分支public/master。我无法弄明白该怎么做。

我尝试在新的本地分支上执行rebase,但它不起作用。

2 个答案:

答案 0 :(得分:6)

重置为第一次提交,然后修改,最后强制推送。

git pull origin master
git checkout master
git reset --soft <my-first-commit>
git commit --amend -m "New commit message"
git push public master --force-with-lease

如果最后一个命令出现“陈旧信息”错误,则

  • 在最后一个命令之前运行git fetch public master,或
  • 运行git push --force-with-lease public +master而不是最后一个命令。

你可以找到你的第一个这样的提交:

git rev-list --max-parents=0 HEAD

答案 1 :(得分:1)

也可以通过检查一个孤儿分支(它将携带当前工作树进行第一次提交),然后你可以进入你想要的任何遥控器。