[Công cụ] - Các lệnh Git cơ bản (Part 2)
Tải code mới nhất về từ branch master
Đầu tiên, bạn cần kiểm tra xem có update mới nhất từ bất kì branch nào hay không:
git fetch origin
Kết quả trả về thường như sau:
ad8d852..896ae21 kevin-dev -> origin/kevin-dev + e5a459d...ef560a6 master -> origin/master (forced update)
Như bạn thấy, vậy là có 2 branch có update mới. Nhiệm vụ của chúng ta là chuyển hẳn về branch master (vì đây thường là branch sẽ có chứa các code merge từ các branch khác). Ta sử dụng lần lượt các dòng lệnh sau:
- Bắt đầu bằng việc reset lại code trên branch hiện tại. Lưu ý bạn cần commit code lên trước khi reset nếu muốn lưu lại nhé.
git reset --hard
- Tiếp theo, ta chuyển qua branch
master
:
git checkout master
- Sau đó, ta chạy lệnh
git fetch origin
nếu bạn chưa chạy ở trên. Nếu đã chạy lệnh trên rồi, bạn chạy tiếp lệnhgit reset --hard origin/master
để update code mới nhất từ master về. - Giờ, bạn cần kiểm tra lại bằng lệnh
git log
để xem các commit mới nhất có khớp không.
Thông thường nếu bạn làm theo như trên thì xác suất code lệch (tức là conflict) thường rất thấp.
Push code từ branch master local lên branch khác trên remote
Thông thường nếu bạn quên tạo branch mới sau khi checkout master, bạn sẽ gặp 1 tình huống là code commit trên master, nhưng mà bạn cần push code lên 1 branch riêng trên remote.
Ta có thể xử lý bằng 2 cách:
Cách 1: Push code trực tiếp từ branch master (local) lên branch khác trên remote
Cách này thiên về hot-fix, tức là đôi khi bạn chỉ có 1 commit cần push thôi. Các bước làm như sau:
- Bạn kiểm tra
git status
thấy báomaster
có 1 commit cần push lên. - Chạy dòng lệnh:
git push -u origin master:<tên branch khác>
để đẩy code lên - Chạy tiếp dòng lệnh
git branch --set-upstream-to=origin/master
để reset remote nhận lại master. - (Nên làm) Bạn chạy lệnh
git reset HEAD^1
để gỡ bỏ commit đó khỏi branch master trên local vàgit reset --hard
. Mục đích là để không xung đột code nếu bạn cần update code master từ remote.
Cách 2: Tạo branch mới và push code lên bình thường
Cách này thì cũng tiện hơn nếu bạn có nhiều commit và cần tạo 1 branch riêng để đẩy code lên.
- Bạn kiểm tra
git status
thấy báomaster
có 1 commit cần push lên. - Bạn tạo 1 branch mới và checkout luôn branch này:
git checkout -b new-branch
- Bây giờ, bạn push code lên remote bằng branch này
git push -u origin new-branch
- (Nên làm) Bạn checkout lại branch
master
và chạygit reset HEAD^1
để gỡ commit khỏi master, bởi vì nếu bạn muốn lấy code mới nhất từ master thì có thể bị xung đột (do branch master có thể không có commit của bạn).
Lấy 1 commit từ các branch khác
Tình huống này khá thú vị: chẳng hạn như bạn đang trên 1 branch chạy fix header trong khi 1 bạn khác đang chạy hotfix global typography. Tình huống đặt ra là bạn kia sửa phần typography của cả header nữa, trong khi bạn cần làm đồng thời.
Như vậy, ngay sau khi bạn kia commit code lên, bạn cần sử dụng code của bạn ấy để xem có bị xung đột gì với code bạn đang làm hay không.
Với các case như này, việc sử dụng cherry-pick
được coi là 1 giải pháp hiệu quả.
Cách thức thực hiện có thể như sau:
- Đầu tiên bạn chạy
git fetch orign
để xem branch của bạn kia có update gì mới không. - Tiếp đến, nếu thấy update mới, bạn tìm commit ID và gõ
git cherry-pick commit-id
để lấy commit đó vào branch hiện tại của bạn.
Lưu ý nếu cả 2 cùng sửa 1 file, có thể sẽ có conflict. Bạn chỉ cần so sánh và cố gắng giữ cả code của bạn lẫn của bạn dev kia là được.
Đam mê không phải là thứ có thể đến với bạn, cũng không phải là thứ bạn có thể nghĩ ra, mà đam mê là điều bạn phải dấn thân, tìm kiếm và quan trọng hơn hết là lựa chọn cho mình.
H.wiki mong muốn luôn cập nhật những thông tin hay và hữu ích cho tất cả mọi người.
Nếu bạn thấy bài viết này hay thì hãy like, chia sẻ với bạn bè, người thân và đừng quên ủng hộ blog nhé !