Patrik Patrik - 1 month ago 9x
Git Question

Remove commits that are not connected to the branch

I wanted to merge in some changes from another repo so I added the remote, fetched and merged.
But I did not think that the commits of the other branch would be added.

I backed one commit from my merge and manually added the changed files and pushed that commit.

So now I have two disconnected commit trees in one branch.
Something like this:


And I just want to remove the 1-2-3-4 commits. I don't care about history or any child/parent commits or the files.

I want to keep the A-B-C-D commits with all history.

I have tried:

git reflog expire --expire-unreachable=now --all
git gc --prune=all --aggressive

git rebase [hash]

But nothing seems to work.


If no ref points to 1, 2, 3 and 4, they are dangling and will be removed by gc.
Where do you still see those commits?
Are still some heads or tags point to those commits?