Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I squash all commit history and push into another remote repository?

I have not been able to figure out after much trying. I have two local branches, master and tests. I have two corresponding remote branches with the same repo, origin/master, origin/tests. I have another remote branch public/master. I have some pushed in commit history on both local master and remote origin/master. Now, I want to squash all the commits of origin/master and push into the remote branch public/master. I can't figure out how to do it.

I have tried doing rebase on a new local branch but it didn't work.

like image 684
soham Avatar asked Apr 06 '26 00:04

soham


1 Answers

Reset to your first commit, then amend, finally force push.

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

If the last command gives a "stale info" error, either

  • run git fetch public master before the last command, or
  • run git push --force-with-lease public +master instead of the last command.

You can find your first commit like this:

git rev-list --max-parents=0 HEAD
like image 55
Shaun Luttin Avatar answered Apr 08 '26 15:04

Shaun Luttin



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!