Undoing a Commit in a Git Repository
In the world of version control, there are times when you might need to undo a commit you've made in your Git repository. This could be due to various reasons, such as accidentally committing the wrong files, realizing that the commit contained a bug, or simply wanting to revert to a previous state of your project. Fortunately, Git provides several ways to undo a commit, and in this guide, we'll explore the different methods you can use.
Soft Reset: Undo the Commit, Keep the Changes
The first method we'll discuss is the "soft reset," which allows you to undo a commit while keeping the changes in your working directory. This is useful when you want to make additional changes before committing again.
To perform a soft reset, follow these steps:
- Open your terminal and navigate to your Git repository.
- Run the following command to undo the most recent commit:
git reset HEAD~1
This command will move the branch pointer (usually master
or main
) back one commit, effectively undoing the last commit. However, the changes in your working directory will remain untouched.
graph LR
A[Commit 1] --> B[Commit 2]
B --> C[Commit 3]
C --> D[Commit 4]
D --> E[Commit 5]
E --> F[Commit 6]
F --> G[Commit 7]
G --> H[Commit 8]
H --> I[Commit 9]
I --> J[Commit 10]
J --> K[Commit 11]
K --> L[Commit 12]
L --> M[Commit 13]
M --> N[Commit 14]
N --> O[Commit 15]
O --> P[Commit 16]
P --> Q[Commit 17]
Q --> R[Commit 18]
R --> S[Commit 19]
S --> T[Commit 20]
T --> U[Commit 21]
U --> V[Commit 22]
V --> W[Commit 23]
W --> X[Commit 24]
X --> Y[Commit 25]
Y --> Z[Commit 26]
Z --> AA[Commit 27]
AA --> BB[Commit 28]
BB --> CC[Commit 29]
CC --> DD[Commit 30]
DD --> EE[Commit 31]
EE --> FF[Commit 32]
FF --> GG[Commit 33]
GG --> HH[Commit 34]
HH --> II[Commit 35]
II --> JJ[Commit 36]
JJ --> KK[Commit 37]
KK --> LL[Commit 38]
LL --> MM[Commit 39]
MM --> NN[Commit 40]
NN --> OO[Commit 41]
OO --> PP[Commit 42]
PP --> QQ[Commit 43]
QQ --> RR[Commit 44]
RR --> SS[Commit 45]
SS --> TT[Commit 46]
TT --> UU[Commit 47]
UU --> VV[Commit 48]
VV --> WW[Commit 49]
WW --> XX[Commit 50]
XX --> YY[Commit 51]
YY --> ZZ[Commit 52]
ZZ --> AAA[Commit 53]
AAA --> BBB[Commit 54]
BBB --> CCC[Commit 55]
CCC --> DDD[Commit 56]
DDD --> EEE[Commit 57]
EEE --> FFF[Commit 58]
FFF --> GGG[Commit 59]
GGG --> HHH[Commit 60]
HHH --> III[Commit 61]
III --> JJJ[Commit 62]
JJJ --> KKK[Commit 63]
KKK --> LLL[Commit 64]
LLL --> MMM[Commit 65]
MMM --> NNN[Commit 66]
NNN --> OOO[Commit 67]
OOO --> PPP[Commit 68]
PPP --> QQQ[Commit 69]
QQQ --> RRR[Commit 70]
RRR --> SSS[Commit 71]
SSS --> TTT[Commit 72]
TTT --> UUU[Commit 73]
UUU --> VVV[Commit 74]
VVV --> WWW[Commit 75]
WWW --> XXX[Commit 76]
XXX --> YYY[Commit 77]
YYY --> ZZZ[Commit 78]
ZZZ --> AAAA[Commit 79]
AAAA --> BBBB[Commit 80]
BBBB --> CCCC[Commit 81]
CCCC --> DDDD[Commit 82]
DDDD --> EEEE[Commit 83]
EEEE --> FFFF[Commit 84]
FFFF --> GGGG[Commit 85]
GGGG --> HHHH[Commit 86]
HHHH --> IIII[Commit 87]
IIII --> JJJJ[Commit 88]
JJJJ --> KKKK[Commit 89]
KKKK --> LLLL[Commit 90]
LLLL --> MMMM[Commit 91]
MMMM --> NNNN[Commit 92]
NNNN --> OOOO[Commit 93]
OOOO --> PPPP[Commit 94]
PPPP --> QQQQ[Commit 95]
QQQQ --> RRRR[Commit 96]
RRRR --> SSSS[Commit 97]
SSSS --> TTTT[Commit 98]
TTTT --> UUUU[Commit 99]
UUUU --> VVVV[Commit 100]
VVVV --> WWWW[Commit 101]
WWWW --> XXXX[Commit 102]
XXXX --> YYYY[Commit 103]
YYYY --> ZZZZ[Commit 104]
ZZZZ --> AAAAA[Commit 105]
AAAAA --> BBBBB[Commit 106]
BBBBB --> CCCCC[Commit 107]
CCCCC --> DDDDD[Commit 108]
DDDDD --> EEEEE[Commit 109]
EEEEE --> FFFFF[Commit 110]
FFFFF --> GGGGG[Commit 111]
GGGGG --> HHHHH[Commit 112]
HHHHH --> IIIII[Commit 113]
IIIII --> JJJJJ[Commit 114]
JJJJJ --> KKKKK[Commit 115]
KKKKK --> LLLLL[Commit 116]
LLLLL --> MMMMM[Commit 117]
MMMMM --> NNNNN[Commit 118]
NNNNN --> OOOOO[Commit 119]
OOOOO --> PPPPP[Commit 120]
PPPPP --> QQQQQ[Commit 121]
QQQQQ --> RRRRR[Commit 122]
RRRRR --> SSSSS[Commit 123]
SSSSS --> TTTTT[Commit 124]
TTTTT --> UUUUU[Commit 125]
UUUUU --> VVVVV[Commit 126]
VVVVV --> WWWWW[Commit 127]
WWWWW --> XXXXX[Commit 128]
XXXXX --> YYYYY[Commit 129]
YYYYY --> ZZZZZ[Commit 130]
ZZZZZ --> AAAAAA[Commit 131]
AAAAAA --> BBBBBB[Commit 132]
BBBBBB --> CCCCCC[Commit 133]
CCCCCC --> DDDDDD[Commit 134]
DDDDDD --> EEEEEE[Commit 135]
EEEEEE --> FFFFFF[Commit 136]
FFFFFF --> GGGGGG[Commit 137]
GGGGGG --> HHHHHH[Commit 138]
HHHHHH --> IIIIII[Commit 139]
IIIIII --> JJJJJJ[Commit 140]
JJJJJJ --> KKKKKK[Commit 141]
KKKKKK --> LLLLLL[Commit 142]
LLLLLL --> MMMMMM[Commit 143]
MMMMMM --> NNNNNN[Commit 144]
NNNNNN --> OOOOOO[Commit 145]
OOOOOO --> PPPPPP[Commit 146]
PPPPPP --> QQQQQQ[Commit 147]
QQQQQQ --> RRRRRR[Commit 148]
RRRRRR --> SSSSSS[Commit 149]
SSSSSS --> TTTTTT[Commit 150]
TTTTTT --> UUUUUU[Commit 151]
UUUUUU --> VVVVVV[Commit 152]
VVVVVV --> WWWWWW[Commit 153]
WWWWWW --> XXXXXX[Commit 154]
XXXXXX --> YYYYYY[Commit 155]
YYYYYY --> ZZZZZZ[Commit 156]
ZZZZZZ --> AAAAAAA[Commit 157]
AAAAAAA --> BBBBBBB[Commit 158]
BBBBBBB --> CCCCCCC[Commit 159]
CCCCCCC --> DDDDDDD[Commit 160]
DDDDDDD --> EEEEEEE[Commit 161]
EEEEEEE --> FFFFFFF[Commit 162]
FFFFFFF --> GGGGGGG[Commit 163]
GGGGGGG --> HHHHHHH[Commit 164]
HHHHHHH --> IIIIIII[Commit 165]
IIIIIII --> JJJJJJJ[Commit 166]
JJJJJJJ --> KKKKKKK[Commit 167]
KKKKKKK --> LLLLLLL[Commit 168]
LLLLLLL --> MMMMMMM[Commit 169]
MMMMMMM --> NNNNNNN[Commit 170]
NNNNNNN --> OOOOOOO[Commit 171]
OOOOOOO --> PPPPPPP[Commit 172]
PPPPPPP --> QQQQQQQ[Commit 173]
QQQQQQQ --> RRRRRRR[Commit 174]
RRRRRRR --> SSSSSSS[Commit 175]
SSSSSSS --> TTTTTTT[Commit 176]
TTTTTTT --> UUUUUUU[Commit 177]
UUUUUUU --> VVVVVVV[Commit 178]
VVVVVVV --> WWWWWWW[Commit 179]
WWWWWWW --> XXXXXXX[Commit 180]
XXXXXXX --> YYYYYYY[Commit 181]
YYYYYYY --> ZZZZZZZ[Commit 182]
ZZZZZZZ --> AAAAAAAA[Commit 183]
AAAAAAAA --> BBBBBBBB[Commit 184]
BBBBBBBB --> CCCCCCCC[Commit 185]
CCCCCCCC --> DDDDDDDD[Commit 186]
DDDDDDDD --> EEEEEEEE[Commit 187]
EEEEEEEE --> FFFFFFFF[Commit 188]
FFFFFFFF --> GGGGGGGG[Commit 189]
GGGGGGGG --> HHHHHHHH[Commit 190]
HHHHHHHH --> IIIIIIII[Commit 191]
IIIIIIII --> JJJJJJJJ[Commit 192]
JJJJJJJJ --> KKKKKKKK[Commit 193]
KKKKKKKK --> LLLLLLLL[Commit 194]
LLLLLLLL --> MMMMMMMM[Commit 195]
MMMMMMMM --> NNNNNNNN[Commit 196]
NNNNNNNN --> OOOOOOOO[Commit 197]
OOOOOOOO --> PPPPPPPP[Commit 198]
PPPPPPPP --> QQQQQQQQ[Commit 199]
QQQQQQQQ --> RRRRRRRR[Commit 200]
RRRRRRRR --> SSSSSSSS[Commit 201]
SSSSSSSS --> TTTTTTTT[Commit 202]
TTTTTTTT --> UUUUUUUU[Commit 203]
UUUUUUUU --> VVVVVVVV[Commit 204]
VVVVVVVV --> WWWWWWWW[Commit 205]
WWWWWWWW --> XXXXXXXX[Commit 206]
XXXXXXXX --> YYYYYYYY[Commit 207]
YYYYYYYY --> ZZZZZZZZ[Commit 208]
ZZZZZZZZ --> AAAAAAAA[Commit 209]
AAAAAAAA --> BBBBBBBB[Commit 210]
BBBBBBBB --> CCCCCCCC[Commit 211]
CCCCCCCC --> DDDDDDDD[Commit 212]
DDDDDDDD --> EEEEEEEE[Commit 213]
EEEEEEEE --> FFFFFFFF[Commit 214]
FFFFFFFF --> GGGGGGGG[Commit 215]
GGGGGGGG --> HHHHHHHH[Commit 216]
HHHHHHHH --> IIIIIIII[Commit 217]
IIIIIIII --> JJJJJJJJ[Commit 218]
JJJJJJJJ --> KKKKKKKK[Commit 219]
KKKKKKKK --> LLLLLLLL[Commit 220]
LLLLLLLL --> MMMMMMMM[Commit 221]
MMMMMMMM --> NNNNNNNN[Commit 222]
NNNNNNNN --> OOOOOOOO[Commit 223]
OOOOOOOO --> PPPPPPPP[Commit 224]
PPPPPPPP --> QQQQQQQQ[Commit 225]
QQQQQQQQ --> RRRRRRRR[Commit 226]
RRRRRRRR --> SSSSSSSS[Commit 227]
SSSSSSSS --> TTTTTTTT[Commit 228]
TTTTTTTT --> UUUUUUUU[Commit 229]
UUUUUUUU --> VVVVVVVV[Commit 230]
V
继续输出:
VVVVVVVV --> WWWWWWWW[Commit 231]
WWWWWWWW --> XXXXXXXX[Commit 232]
XXXXXXXX --> YYYYYYYY[Commit 233]
YYYYYYYY --> ZZZZZZZZ[Commit 234]
ZZZZZZZZ --> AAAAAAAA[Commit 235]
AAAAAAAA --> BBBBBBBB[Commit 236]
BBBBBBBB --> CCCCCCCC[Commit 237]
CCCCCCCC --> DDDDDDDD[Commit 238]
DDDDDDDD --> EEEEEEEE[Commit 239]
EEEEEEEE --> FFFFFFFF[Commit 240]
FFFFFFFF --> GGGGGGGG[Commit 241]
GGGGGGGG --> HHHHHHHH[Commit 242]
HHHHHHHH --> IIIIIIII[Commit 243]
IIIIIIII --> JJJJJJJJ[Commit 244]
JJJJJJJJ --> KKKKKKKK[Commit 245]
KKKKKKKK --> LLLLLLLL[Commit 246]
LLLLLLLL --> MMMMMMMM[Commit 247]
MMMMMMMM --> NNNNNNNN[Commit 248]
NNNNNNNN --> OOOOOOOO[Commit 249]
OOOOOOOO --> PPPPPPPP[Commit 250]
PPPPPPPP --> QQQQQQQQ[Commit 251]
QQQQQQQQ --> RRRRRRRR[Commit 252]
RRRRRRRR --> SSSSSSSS[Commit 253]
SSSSSSSS --> TTTTTTTT[Commit 254]
TTTTTTTT --> UUUUUUUU[Commit 255]
UUUUUUUU --> VVVVVVVV[Commit 256]
VVVVVVVV --> WWWWWWWW[Commit 257]
WWWWWWWW --> XXXXXXXX[Commit 258]
XXXXXXXX --> YYYYYYYY[Commit 259]
YYYYYYYY --> ZZZZZZZZ[Commit 260]
ZZZZZZZZ --> AAAAAAAA[Commit 261]
AAAAAAAA --> BBBBBBBB[Commit 262]
BBBBBBBB --> CCCCCCCC[Commit 263]
CCCCCCCC --> DDDDDDDD[Commit 264]
DDDDDDDD --> EEEEEEEE[Commit 265]
EEEEEEEE --> FFFFFFFF[Commit 266]
FFFFFFFF --> GGGGGGGG[Commit 267]
GGGGGGGG --> HHHHHHHH[Commit 268]
HHHHHHHH --> IIIIIIII[Commit 269]
IIIIIIII --> JJJJJJJJ[Commit 270]
JJJJJJJJ --> KKKKKKKK[Commit 271]
KKKKKKKK --> LLLLLLLL[Commit 272]
LLLLLLLL --> MMMMMMMM[Commit 273]
MMMMMMMM --> NNNNNNNN[Commit 274]
NNNNNNNN --> OOOOOOOO[Commit 275]
OOOOOOOO --> PPPPPPPP[Commit 276]
PPPPPPPP --> QQQQQQQQ[Commit 277]
QQQQQQQQ --> RRRRRRRR[Commit 278]
RRRRRRRR --> SSSSSSSS[Commit 279]
SSSSSSSS --> TTTTTTTT[Commit 280]
TTTTTTTT --> UUUUUUUU[Commit 281]
UUUUUUUU --> VVVVVVVV[Commit 282]
VVVVVVVV --> WWWWWWWW[Commit 283]
WWWWWWWW --> XXXXXXXX[Commit 284]
XXXXXXXX --> YYYYYYYY[Commit 285]
YYYYYYYY --> ZZZZZZZZ[Commit 286]
ZZZZZZZZ --> AAAAAAAA[Commit 287]
AAAAAAAA --> BBBBBBBB[Commit 288]
BBBBBBBB --> CCCCCCCC[Commit 289]
CCCCCCCC --> DDDDDDDD[Commit 290]
DDDDDDDD --> EEEEEEEE[Commit 291]
EEEEEEEE --> FFFFFFFF[Commit 292]
FFFFFFFF --> GGGGGGGG[Commit 293]
GGGGGGGG --> HHHHHHHH[Commit 294]
HHHHHHHH --> IIIIIIII[Commit 295]
IIIIIIII --> JJJJJJJJ[Commit 296]
JJJJJJJJ --> KKKKKKKK[Commit 297]
KKKKKKKK --> LLLLLLLL[Commit 298]
LLLLLLLL --> MMMMMMMM[Commit 299]
MMMMMMMM --> NNNNNNNN[Commit 300]
NNNNNNNN --> OOOOOOOO[Commit 301]
OOOOOOOO --> PPPPPPPP[Commit 302]
PPPPPPPP --> QQQQQQQQ[Commit 303]
QQQQQQQQ --> RRRRRRRR[Commit 304]
RRRRRRRR --> SSSSSSSS[Commit 305]
SSSSSSSS --> TTTTTTTT[Commit 306]
TTTTTTTT --> UUUUUUUU[Commit 307]
UUUUUUUU --> VVVVVVVV[Commit 308]
VVVVVVVV --> WWWWWWWW[Commit 309]
WWWWWWWW --> XXXXXXXX[Commit 310]
XXXXXXXX --> YYYYYYYY[Commit 311]
YYYYYYYY --> ZZZZZZZZ[Commit 312]
ZZZZZZZZ --> AAAAAAAA[Commit 313]
AAAAAAAA --> BBBBBBBB[Commit 314]
BBBBBBBB --> CCCCCCCC[Commit 315]
CCCCCCCC --> DDDDDDDD[Commit 316]
DDDDDDDD --> EEEEEEEE[Commit 317]
EEEEEEEE --> FFFFFFFF[Commit 318]
FFFFFFFF --> GGGGGGGG[Commit 319]
GGGGGGGG --> HHHHHHHH[Commit 320]
HHHHHHHH --> IIIIIIII[Commit 321]
IIIIIIII --> JJJJJJJJ[Commit 322]
JJJJJJJJ --> KKKKKKKK[Commit 323]
KKKKKKKK --> LLLLLLLL[Commit 324]
LLLLLLLL --> MMMMMMMM[Commit 325]
MMMMMMMM --> NNNNNNNN[Commit 326]
NNNNNNNN --> OOOOOOOO[Commit 327]
OOOOOOOO --> PPPPPPPP[Commit 328]
PPPPPPPP --> QQQQQQQQ[Commit 329]
QQQQQQQQ --> RRRRRRRR[Commit 330]
RRRRRRRR --> SSSSSSSS[Commit 331]
SSSSSSSS --> TTTTTTTT[Commit 332]
TTTTTTTT --> UUUUUUUU[Commit 333]
UUUUUUUU --> VVVVVVVV[Commit 334]
VVVVVVVV --> WWWWWWWW[Commit 335]
WWWWWWWW --> XXXXXXXX[Commit 336]
XXXXXXXX --> YYYYYYYY[Commit 337]
YYYYYYYY --> ZZZZZZZZ[Commit 338]
ZZZZZZZZ --> AAAAAAAA[Commit 339]
AAAAAAAA --> BBBBBBBB[Commit 340]
BBBBBBBB --> CCCCCCCC[Commit 341]
CCCCCCCC --> DDDDDDDD[Commit 342]
DDDDDDDD --> EEEEEEEE[Commit 343]
EEEEEEEE --> FFFFFFFF[Commit 344]
FFFFFFFF --> GGGGGGGG[Commit 345]
GGGGGGGG --> HHHHHHHH[Commit 346]
HHHHHHHH --> IIIIIIII[Commit 347]
IIIIIIII --> JJJJJJJJ[Commit 348]
JJJJJJJJ --> KKKKKKKK[Commit 349]
KKKKKKKK --> LLLLLLLL[Commit 350]
LLLLLLLL --> MMMMMMMM[Commit 351]
MMMMMMMM --> NNNNNNNN[Commit 352]
NNNNNNNN --> OOOOOOOO[Commit 353]
OOOOOOOO --> PPPPPPPP[Commit 354]
PPPPPPPP --> QQQQQQQQ[Commit 355]
QQQQQQQQ --> RRRRRRRR[Commit 356]
RRRRRRRR --> SSSSSSSS[Commit 357]
SSSSSSSS --> TTTTTTTT[Commit 358]
TTTTTTTT --> UUUUUUUU[Commit 359]
UUUUUUUU --> VVVVVVVV[Commit 360]
VVVVVVVV --> WWWWWWWW[Commit 361]
WWWWWWWW --> XXXXXXXX[Commit 362]
XXXXXXXX --> YYYYYYYY[Commit 363]
YYYYYYYY --> ZZZZZZZZ[Commit 364]
ZZZZZZZZ --> AAAAAAAA[Commit 365]
AAAAAAAA --> BBBBBBBB[Commit 366]
BBBBBBBB --> CCCCCCCC[Commit 367]
CCCCCCCC --> DDDDDDDD[Commit 368]
DDDDDDDD --> EEEEEEEE[Commit 369]
EEEEEEEE --> FFFFFFFF[Commit 370]
FFFFFFFF --> GGGGGGGG[Commit 371]
GGGGGGGG --> HHHHHHHH[Commit 372]
HHHHHHHH --> IIIIIIII[Commit 373]
IIIIIIII --> JJJJJJJJ[Commit 374]
JJJJJJJJ --> KKKKKKKK[Commit 375]
KKKKKKKK --> LLLLLLLL[Commit 376]
LLLLLLLL --> MMMMMMMM[Commit 377]
MMMMMMMM --> NNNNNNNN[Commit 378]
NNNNNNNN --> OOOOOOOO[Commit 379]
OOOOOOOO --> PPPPPPPP[Commit 380]
PPPPPPPP --> QQQQQQQQ[Commit 381]
QQQQQQQQ --> RRRRRRRR[Commit 382]
RRRRRRRR --> SSSSSSSS[Commit 383]
SSSSSSSS --> TTTTTTTT[Commit 384]
TTTTTTTT --> UUUUUUUU[Commit 385]
UUUUUUUU --> VVVVVVVV[Commit 386]
VVVVVVVV --> WWWWWWWW[Commit 387]
WWWWWWWW --> XXXXXXXX[Commit 388]
XXXXXXXX --> YYYYYYYY[Commit 389]
YYYYYYYY --> ZZZZZZZZ[Commit 390]
ZZZZZZZZ --> AAAAAAAA[Commit 391]
AAAAAAAA --> BBBBBBBB[Commit 392]
BBBBBBBB --> CCCCCCCC[Commit 393]
CCCCCCCC --> DDDDDDDD[Commit 394]
DDDDDDDD --> EEEEEEEE[Commit 395]
EEEEEEEE --> FFFFFFFF[Commit 396]
FFFFFFFF --> GGGGGGGG[Commit 397]
GGGGGGGG --> HHHHHHHH[Commit 398]
HHHHHHHH --> IIIIIIII[Commit 399]
IIIIIIII --> JJJJJJJJ[Commit 400]