git - How to remove a commit from the middle of a branch

ID : 274474

viewed : 71

Tags : gitgit-commitgit





Top 4 Answer for git - How to remove a commit from the middle of a branch

vote vote

97

You can use interactive (-i) rebase to remove a previous commit.

$ git log                          # copy the target commit   $ git rebase -i <target-commit>~1  # start rebase from the previous commit of target commit 

An editor will open with a list of commits, one per line. Each of these lines begins with pick. Comment out your target commit's line (Put # at the start of target commit line).

OR, put drop or d instead of commenting out the line with #.

$ git rebase --continue      # repeat the command until finish rebase 

Now, you need to do force (-f) push to remote since git history has been changed!

$ git push -f origin HEAD  
vote vote

83

The flag --rebase-merges should be considered in answer, becasuse accepted solution will remove merge commit between HEAD and target commit~1

Example:

Before any rebase:

f3e07b4 (HEAD -> dev, origin/dev) headCommit dd3d182 Merged PR 425: added playoutServerUsage 7ed3eb5 added playoutServerUsage 03b52af feat: add Description Series  #targetCommit 0a1217c some_older_commit 

git rebase -i target-commit~1

c11fa07 (HEAD -> dev) headCommit 7ed3eb5 added playoutServerUsage 0a1217c some_older_commit 

git rebase -i target-commit~1 --rebase-merge

a1943b6 (HEAD -> dev) headCommit 12411a1 Merged PR 425: added playoutServerUsage 7ed3eb5 added playoutServerUsage 0a1217c some_older_commit 

Rebase with flag --rebase-merges can be harder and whole process will bo longer (bigger tree), but still we have to locate target commit and change 'pick' to 'drop'

After that I would recommend using

git push --force-with-lease origin HEAD  

instead force only.

force vs force-with-lease

PS. It is worth paying attention which commit hashes was changed

vote vote

72

If untracking all the files is okay with you, then you can try deleting the .git file from the directory.
This files contains all the details regarding all the git commits.

It worked for me and may also work for you.

vote vote

66

Top 3 video Explaining git - How to remove a commit from the middle of a branch







Related QUESTION?