Khôi phục commit sau khi git reset –hard và push –force! Lấy độc trị độc !

Hí huynh đệ ! Tại hạ là saiury92 đây ! Trong đây có huynh đài nào là fan của truyện kiếm hiệp Kim Dung không ? Các hạ hãy comment ở bình luận để tại hạ được diện kiến !

Trong thế giới võ hiệp của cố nhà văn Kim Dung, trúng độc có thể nói là nỗi ám ảnh của hầu hết các nhân sĩ khi hành tẩu giang hồ. Bên cạnh đó cũng sinh ra vô vàn phương pháp chữa độc như sử dụng thuốc giải độc, hay là dùng nội công để chữa ! Khi các phương pháp trên đều vô phương cứu chữa, một phương pháp nguy hiểm ngang đánh tài xỉu được sử dụng ! Đó chính là “Lấy độc trị độc” . Trong bộ tiểu thuyết Thiên long bát bộ, Đoàn Dự đã bị trúng độc của Lục Mạch Thần Kiếm, chính Huyền Minh Nhị Lão là người đã sử dụng một loại độc khác để trung hòa độc của Lục Mạch Thần Kiếm.

Vâng ! Quay về thực tại ! Bạn đã bao giờ bị thằng làm cùng, nó vừa code nó vừa chửi “Đ* M* ! Thằng nào push code làm mất m* commit của bố mày rồi !“. Có thể lúc đó bạn đã vô tình git reset –hard hay chỉ là nhỡ tay push –force lên thôi ! Làm đ*o gì mà căng !

Hôm nay, tại hạ xin hướng dẫn các vị huynh đài, sử dụng phương pháp lấy độc trị độc, dùng chính git reset –hardpush –force để khôi phục lại commit đã mất !

Bài toán ?

Tại hạ đang có 3 commit, lỡ tay git reset –hardpush –force lên còn có 1 commit !

6c01759 (HEAD -> master, origin/master) Commit 3
842ed8d Commit 2
786ca7f Commit 1

> git reset --hard 786ca7f & git push --force origin master

786ca7f (HEAD ->  master, origin/master) Commit 1

Lấy độc trị độc ?

Sử dụng git reflog hiển thị tất cả các commit, bao gồm cả những commit đã bị xóa ! Lưu ý: git log chỉ hiển thị những commit hiện tại.

786ca7f (HEAD -> master, origin/master) HEAD@{0}: reset: moving to 786ca7f # log when git reset
6c01759 HEAD@{1}: commit: Commit 3 # commit cần khôi phục
842ed8d HEAD@{2}: commit: Commit 2
786ca7f (HEAD -> master) HEAD@{3}: commit (initial): Commit 1

Các hạ sẽ thấy được hành vi git reset được log lại ! Tìm SHA của commit ngay trước hành vi reset để rollback ! Sử dụng chính git reset –hard khôi phục commit:

> git reset --hard 6c01759

6c01759 (HEAD -> master) Commit 3
842ed8d Commit 2
786ca7f Commit 1

Push lại commit đã khôi phục:

> git push --force origin master

6c01759 (HEAD -> master, origin/master) Commit 3
842ed8d Commit 2
786ca7f Commit 1

Dễ quá phải không các vị huynh đệ ! Cổ nhân xưa có câu không làm thì không có lỗi ! Vì vậy các huynh đệ tránh sử dụng git reset –hardpush –force khi nào cờ bí thì mới lôi ra sài thui ! Cảm ơm các vị huynh đài đã nghe xàm xí ! Thân ái và hẹn gặp lại !

0 Shares:
2 comments
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like