KHÔNG BAO GIỜ force push master
Git
63
github
19
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.
10 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
51 9
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 5 năm trước
51 9
White
23 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 5 năm trước
23 2
Bài viết liên quan
White
4 3
Xin chào mọi người, bài viết hôm nay sẽ liên quan đến một công cụ quản lý source code vô cùng quen thuộc đối với developer hiện nay đó chính là Git...
Julian Dong viết 6 tháng trước
4 3
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 gần 2 năm trước
2 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
3 bài viết.
10 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á!