Git: Delete last x commits on github/gitlab

Hi,

this post describes if something went wrong and you want to delete the last n commits on gitlab.

Make a fresh clone of your repository

1
2
michael@debdev ~ # git clone git@gitlab.com:MyUser/MyProject
michael@debdev ~ # cd MyProject

Determine the last commit you want to preserve/your HEAD should be

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
michael@debdev ~/MyProject # git log
commit f526d79a10fbdc702e3c7c6b148a53289868731b (HEAD -> main, origin/main, origin/HEAD)
Author: michael@debdev
Date:   Thu Jul 4 18:48:38 2024 +0200
 
    Doc update
 
commit dc67e928afc7092daa21b33fa8193a96b76375fe
Author: michael@debdev
Date:   Thu Jul 4 18:40:10 2024 +0200
 
    New File
 
commit 3023fb10bcde2faf390eb9b4f69b538711daba40
Author: michael@debdev
Date:   Thu Jul 4 18:24:58 2024 +0200
    Fixes
 
....
....

In the case commit 3023fb10bcde2faf390eb9b4f69b538711daba40

1
michael@debdev ~/MyProject # git reset --hard dc67e928afc7092daa21b33fa8193a96b76375fe

Then push it pack with -f switch

1
michael@debdev ~/MyProject # git push -f origin main

If an error

1
remote: GitLab: You are not allowed to force push code to a protected branch on this project.

occure then your respository is protected. Unprotect it

gitlab unprotect repository
gitlab unprotect repository

push the repository and reprotect the repository.

Michael

Leave a Reply