KHÔNG BAO GIỜ force push master
Git
51
github
17
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.
7 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
47 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 2 năm trước
47 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 2 năm trước
18 2
Bài viết liên quan
White
48 7
Tôi xin tổng hợp các cách dùng git stash tôi hay sử dụng Lưu lại thay đổi Git stash được sử dụng khi muốn lưu lại các thay đổi chưa commit, thườ...
BB viết gần 3 năm trước
48 7
White
10 2
Xin chào các bạn. Chắc hẳn mỗi chúng ta đều đã từng phát triển app sử dụng API của bên thứ 3, và chắc mọi người đều biết là hầu hết các API service...
Hải Nguyễn viết 1 năm trước
10 2
White
5 7
Thông thường một feature mới thường được làm trên một nhánh (branch) riêng và thường xuyên pull các cập nhật từ nhánh master trong quá trình đấy. S...
Lơi Rệ viết hơn 2 năm trước
5 7
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


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