git - 我如何压缩所有提交历史并推送到另一个远程存储库?

标签 git github rebase squash

经过多次尝试,我一直无法弄清楚。我有两个本地分支,mastertests。我有两个具有相同 repo 的相应远程分支,origin/masterorigin/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

如果最后一条命令给出了“陈旧信息”错误,要么

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

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

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

关于git - 我如何压缩所有提交历史并推送到另一个远程存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44663822/

相关文章:

git - 如何管理 Git "upstream"分支和相关补丁?

python - 在 Heroku 应用程序之间共享 Python 代码

windows - 在 Jenkins 用户下的 Windows Git 中指定 SSH 凭据/ key

api - GitHub API V3:push_at和updated_at有什么区别?

git Push 在推送到共享私有(private)存储库时要求输入用户名和密码

javascript - 是否可以使用 Google Analytics 信息显示博客查看计数器

git - 在 Github 上删除 <user> committed with <user>

git - 将存储库克隆到 GitHub

windows - 带密码的 ssh key 突然*不*要求我输入密码