Laurent
Laurent

Reputation: 13528

How to remove a commit which does not show with 'git rebase'?

I have a repository with only one branch named main.

Here is what git log --oneline --graph --all outputs:

* 92033fe (HEAD -> main, origin/main) [test] Add some new tests
* 5e281c4 [style] Improve code formatting
* 50ccf6a release-1
| * 307cfba (tag: 1.0.0) release-1
|/
* 7d734b4 [feat] Add new feature
* 0b3c993 [fix] Fix some tests

What happened here is that I tried to tag, after the fact, commit 50ccf6a as 1.0.0, but did something wrong, and now I have this duplicated, and seemingly branching out, commit 307cfba, which I want to get rid of, without affecting the rest of the branch.

Usually, I do git rebase -i --root main, but this particular commit does not appear in the list of commits, only those I intend to keep:

pick 0b3c993 [fix] [fix] Fix some tests
pick 7d734b4 [feat] Add new feature
pick 50ccf6a release-1
pick 5e281c4 [style] Improve code formatting
pick 92033fe [test] Add some new tests

What is happening here?

Upvotes: 0

Views: 140

Answers (2)

Saurabh Vajpayee
Saurabh Vajpayee

Reputation: 121

You can try to use --onto option of rebase command (Try these steps on a copy of your repo to be safe). Delete your tag first and recreate it on desired commit.

git tag -d 1.0.0
git tag -a 1.0.0 50ccf6a 
git rebase --onto 7d734b4 50ccf6a~1

Upvotes: 0

torek
torek

Reputation: 490178

Commit 307cfba is not on branch main. If you want it off of branch main, that's easy: do nothing at all, as it's already not there.

Commit 307cfba is found because of tag 1.0.0. If you want to not see 307cfba at all, even with git log --all, you'll need to delete tag 1.0.0 (or forcibly move it, but if you intend to do that, one easy way is to delete it first, then create it again).

Upvotes: 1

Related Questions