KHÔNG BAO GIỜ force push master
Git
56
github
20
White

Le Lam viết ngày 10/09/2015

Tôi lỡ push một vài commit xấu và tôi muốn xóa đi mà không ai biết :v

Giả sử bạn đã "lỡ" push 1 vài commit không hay lên master

$ git log --oneline
hash1234 bad commit1 
hash5678 bad commit2
hash9101 normal commit

Để sửa tình trạng này thì có một số bạn hay xóa commit ở local đi rồi update lên upstream bằng cách xóa upstream branch đi push lại hoặc force push cả upstream.

Mình muốn khuyên các bạn không bao giờ nên làm thế. Hậu quả đầu tiên là: tất cả các Pull Request sẽ bị close.

Vậy nên làm thế nào ?

Bỏ ý định xóa commit mà không muốn người khác biết đi, hãy sửa sai bằng một commit mới. Cách làm là revert rồi rebase

$ git revert hash1234
$ git revert hash5678
$ git rebase -i HEAD~2

Khi này cơ chế rebase -i của git sẽ mở 1 cái editor và hỏi bạn muốn setup quá trình rebase thế nào. Bạn giữ lại commit đầu tiên bằng pick hoặc p, bỏ commit thứ 2 bằng squash hoặc s.

pick hash1234 Revert "bad commit1"
squash hash5678 Revert "bad commit2"

# Rebase hash1234..hash5678 onto hash1234

Sau khi save trong editor xong thì git sẽ tổng hợp 2 revert commit thành 1 commit duy nhất và là một commit mới. Bây giờ bạn chỉ cần push commit mới này lên upstream.

$ git push origin master

Dùng tính năng của Github để cấm force push

Tin vui cho team leader là gần đây Github đã ra tính năng mới cho phép cấm force push tại một branch. Team leader chỉ cần vào phần setting, chọn protected branches là master, thì master sẽ không thể bị xóa hoặc force push được nữa!

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Le Lam

3 bài viết.
8 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
50 8
Khi mới học Git mình hay mắc khá nhiều lỗi, và thời gian đi tìm hiểu khắc phục những lỗi tạo ra nhiều khi quá cả thời gian quay lại commit trước và...
Le Lam viết hơn 3 năm trước
50 8
White
18 2
Git reflog có thể nhiều bạn đã biết rồi, mình viết lại ở đây để memo cho bản thân. Lỡ tay reset hard Git reflog gần như là vũ khí cuối cùng để c...
Le Lam viết hơn 3 năm trước
18 2
Bài viết liên quan
White
2 0
Hôm nay group review một cái tài liệu về version control với mấy đồng nghiệp, một người bạn bảo: Cái đó có gì đâu mà ông viết có vẻ khó khăn vậy,...
Long Nguyễn Xuân viết 1 tháng trước
2 0
White
15 2
Trờ lại trong một bài viết mới, tạm gác lại những series để viết về những câu chuyện bên lề xoay quanh cuộc đời coding, hôm nay tôi sẽ chia sẻ với ...
Hoàng Nguyễn viết gần 2 năm trước
15 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
3 bài viết.
8 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!