我如何压缩所有提交历史并推送到另一个远程存储库?
How do I squash all commit history and push into another remote repository?
我试了很多都没弄明白。我有两个本地分支机构,master
和 tests
。我有两个具有相同回购协议的相应远程分支,origin/master
、origin/tests
。我有另一个远程分支 public/master
。我在本地 master
和远程 origin/master
上都有一些推送的提交历史记录。现在,我想压缩 origin/master
的所有提交并推送到远程分支 public/master
。我不知道该怎么做。
我试过 rebase
在一个新的本地分支上,但没有成功。
重置为您的第一次提交,然后修改,最后强制推送。
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
如果最后一个命令给出 "stale info" 错误,要么
- 运行
git fetch public master
在最后一个命令之前,或者
- 运行
git push --force-with-lease public +master
而不是最后一个命令。
您可以这样找到您的第一个提交:
git rev-list --max-parents=0 HEAD
也可以通过检查孤立分支(它将携带当前工作树进行第一次提交)来工作,然后你可以推送到任何你喜欢的远程。
我试了很多都没弄明白。我有两个本地分支机构,master
和 tests
。我有两个具有相同回购协议的相应远程分支,origin/master
、origin/tests
。我有另一个远程分支 public/master
。我在本地 master
和远程 origin/master
上都有一些推送的提交历史记录。现在,我想压缩 origin/master
的所有提交并推送到远程分支 public/master
。我不知道该怎么做。
我试过 rebase
在一个新的本地分支上,但没有成功。
重置为您的第一次提交,然后修改,最后强制推送。
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
如果最后一个命令给出 "stale info" 错误,要么
- 运行
git fetch public master
在最后一个命令之前,或者 - 运行
git push --force-with-lease public +master
而不是最后一个命令。
您可以这样找到您的第一个提交:
git rev-list --max-parents=0 HEAD
也可以通过检查孤立分支(它将携带当前工作树进行第一次提交)来工作,然后你可以推送到任何你喜欢的远程。