Tôi vừa lỡ commit sai, làm sao để sửa lại ngay lập tức?
Bài viết được sự cho phép của tác giả Tống Xuân Hoài
Vấn đề
Commit code là việc làm thường ngày của các developer, nhưng đôi khi vì một lý do nào đó mà bạn lỡ commit thiếu nội dung hay commit xong mới phát hiện ra còn chỗ quên chưa sửa lại thì phải làm thế nào?
Nhiều người có thể sẽ chọn cách tạo một commit khác để sửa chữa lỗi lầm nhưng điều đó sẽ làm cho cây git của chúng ta xuất hiện những commit dài lê thê hay thậm chí còn có thể bị đánh giá là làm ẩu, thiếu chuyên nghiệp…
Sửa lại commit
Git cho phép chúng ta sửa đổi nội dung của commit cuối cùng bằng lệnh
git commit --amend --no-edit
. Bạn có thể sử dụng để giải quyết vấn đề nêu ở trên.
Ví dụ commit cuối cùng của tôi là “release version 1.0.1” và ngay khi vừa commit xong tôi phát hiện ra mình quên chưa add file README.md, do đó tôi có thể làm:
$ git log
commit 56da84715291dbb683269c085fe9a4b42aafb1e7
Author: hoaitx <[email protected]>
Date: Sun Jun 20 15:31:35 2021 +0700
release version 1.0.1
$ git add README.md
$ git commit --amend --no-edit
$ git log
commit ac48bc383726cfaaf4032b68ef6e6bece6cec368
Author: hoaitx <[email protected]>
Date: Sun Jun 20 15:32:35 2021 +0700
release version 1.0.1
Sau đó hãy thử kiểm tra lại lịch sử commit, bạn sẽ thấy file README.md đã được add vào.
Sửa lại nội dung commit vừa xong
Git cũng cho phép bạn sửa lại message của commit cuối cùng bằng lệnh git commit --amend -m <message>
.
Ví dụ tôi muốn sửa lại message “release version 1.0.1” -> “release v1.0.1” thì:
$ git commit --amend -m "release v1.0.1"
$ git log
commit dbdd6c3844a01b3d03bbc777516fba16ba07d64d
Author: hoaitx <[email protected]>
Date: Sun Jun 20 15:33:35 2021 +0700
release v1.0.1
Xem thêm các việc làm PHP lương cao trên TopDev
Xoá commit mà không cần revert
Cách này chỉ áp dụng cho trường hợp bạn mới chỉ commit ở local chứ chưa push lên remote. Khi commit chưa push lên remote thì bạn có thể xoá chúng ở local bằng lệnh
git reset --hard <remote/branch>
.
Lệnh này sẽ reset lại HEAD ở local bằng với HEAD ở remote, nôm na là nó đồng bộ những commit ở remote về local nên là sẽ xoá hết những commit chưa push ở local.
Lưu ý rằng việc này cũng đồng nghĩa với những commit chưa push ở local sẽ bị mất hết và bạn sẽ phải viết lại.
Ví dụ tôi reset lại branch develop ở remote name là origin:
$ git reset --hard origin/develop
Kết luận
Trên đây là một số câu lệnh git xử lý một số trường hợp liên quan đến việc commit “ẩu”. Dù sao trước khi commit thì mọi người cũng nên kiểm tra lại tất cả nội dung thật kĩ nhé!
Bài viết gốc được đăng tải tại 2coffee.dev
Có thể bạn quan tâm:
- G Giải Quyết Bài Toán Kinh Doanh Bằng Big Data và AI
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- F Framework nào tốt nhất cho dự án của bạn? – Checklist chi tiết
- K Kinh nghiệm xử lý responsive table hiệu quả
- S Stackoverflow là gì? Bí kíp tận dụng Stack Overflow hiệu quả
- 7 7 kinh nghiệm hữu ích khi làm việc với GIT trong dự án
- B Bài tập Python từ cơ bản đến nâng cao (có lời giải)
- B Bảo mật API là gì? Một số nguyên tắc và kỹ thuật cần biết
- H Hướng dẫn cài đặt và tự học lập trình Python cơ bản từ A-Z
- C Chinh Phục Phân Tích Dữ Liệu Với Pandas Trong Python: Hướng Dẫn Từng Bước