Mẹo thao tác các 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, vậy cách nào hiệu quả nhất? Tùy thuộc mỗi người, có người thì dùng các GUI client như GitUp, GitX, Tower để xem các thay đổi rồi nhóm và move chúng vào staging, còn một ...
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, vậy cách nào hiệu quả nhất?
Tùy thuộc mỗi người, có người thì dùng các GUI client như GitUp, GitX, Tower để xem các thay đổi rồi nhóm và move 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 đó.
Ví dụ:
$ 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 abc -Tôi yêu Android +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 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