Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
Mẹo thao tác với thay đổi với git add
Bạn có một branch với rất nhiều file được thêm hay thay đổi và bạn muốn git add
chúng và nhóm chúng theo từng commit riêng biệt, cách nào hiệu quả nhất?
Mỗi người một kiểu, có người thì dùng các GUI client như GitUp, GitX, Tower để xem các thay đổi rồi nhóm và di chuyển chúng vào staging, còn một số thì vẫn trung thành với CLI đơn thuần với git diff
và git add
một cách thủ công. Tôi có biết một mẹo đơn giản giúp ai đang phải lặp đi lặp lại bước diff và add trên thông qua lệnh đơn giản:
git add . --patch
Lệnh này sẽ lặp qua tất cả các file mà bạn đã thay đổi và sẽ thông báo lên màn hình thay đổi và hỏi bạn muốn làm gì với các thay đổi đó
vd:
$ git add . --patch
diff --git a/README.md b/README.md
index 26d1882..ddf8523 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
## Dự án trồng người
-Tôi yêu PHP
+Tôi yêu Ruby
Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]?
Có thể thấy ở trên là git sẽ hỏi bạn có các câu trả lời sau [y,n,q,a,d,/,j,J,g,e,?]
.
Nếu bạn đồng ý muốn stage file này thì chỉ cần nhập vào y
, không thì n
.
Hoặc bạn thấy là cần có thay đổi nội dung thì nhập vào e
(edit)
Nếu bạn muốn stage thay đổi này và tất cả các thay đổi khác của file thì dùng lệnh a
(all)
Và nếu bạn phát hiện thay đổi này là do một ai đó lén lút thay đổi khi bạn đi ra ngoài ăn trưa thì có thể dùng lệnh d
để xoá thay đổi này.
Còn nếu bạn muốn thoát hắt khỏi công đoạn này thì chỉ cần dùng tứ khoá q
(quit)
Nếu bạn thay đổi 2 file, bạn có thể bỏ qua file và nhảy tới file tiếp bằng lệnh j
(jump).
Thêm vào nữa lệnh g
cho phép liệt kê các thay đổi (hunk) ra màn hình để bạn chọn nhảy tới:
Stage this hunk [y,n,q,a,d,/,k,K,g,e,?]? g
1: -1,6 +1,6 -Tôi yêu PHP
2: -46,4 +46,4 -Tôi chẳng thấy có vấn đề gì cho tất cả mọi code vào 1 file
go to which hunk?
Cuối cùng là lệnh quan trọng nhất, lệnh ?
, sẽ liệt kê các lựa chọn với chú thích, nếu bí thì hãy gọi lệnh này :)







