Series Git Nâng Cao - phần I: git checkout
Sau đây mình xin giới thiệu với các bạn những câu lệnh git sẽ giúp bạn xử lý một số tình huống nâng cao thường gặp trong công việc.
git checkout
git checkout
là hành động chuyển đổi giữa các phiên bản khác nhau của một đối tượng. Đối tượng ở đây có thể là những tệp (files), những commit, hoặc những nhánh (branches).
Cách sử dụng là thêm tên của branch sau câu lệnh git checkout
, ví dụ, thư mục làm việc của bạn đang ở nhánh master
, giả sử đã có sẵn nhánh a-new-feature
git checkout a-new-feature
Câu lệnh trên có ý nghĩa là điều hướng giữa các nhánh được tạo bởi git branch
, và cập nhật các file trong thư mục hiện tại ở nhánh master
giống với phiên bản trong nhánh a-new-feature
.
Đối với trường hợp, bạn vừa muốn tạo một nhánh mới đồng thời "checkout" sang nhánh đó luôn thì dùng thêm đối số -b
thì git sẽ mặc định tạo ra một nhánh từ nhánh hiện tại, và chuyển tới nhánh đó.
git checkout -b <new-branch>
Ví dụ:
Thêm tên nhánh vào phía sau sẽ chỉ định một nhánh bất kỳ để check out không phải nhánh hiện tại
git checkout -b <new-branch><existing-branch>
"Checkout" một nhánh từ xa (a remote branch) thì làm thế nào?
Đầu tiên là "fetch" hết các nhánh từ xa
git fetch --all
Sau đó thì "checkout" bình thường thôi
git checkout <remote-branch>
hoặc
git checkout <remote-branch> origin/<remote-branch>
Detached HEADS
Qua các cách ở trên ta đã biết được các cách chuyển đổi nhánh thông qua tên branch. Ngoài ra ta cũng có thể chuyển đổi về các phiên bản cũ thông qua mã Hash của commit. Trạng thái này được gọi là "Detached HEAD".
git checkout a05ef02
//checking out 'a05ef02'.
- Lưu ý: thông thường khi ta tạo một commit mới trên branch, Git sẽ tự động di chuyển con trỏ HEAD đến commit mới nhất mà bạn vừa tạo. Nhưng đối với Detached HEAD sẽ không như vậy, những commit mới sẽ không thuộc bất kì một nhánh nào và chúng ta dễ dàng mất những thay đổi mới (trừ khi chúng ta nhớ được mã Hash của commit đó). Có một cách đơn giản hơn đó là sử dụng Git stash.
- Cách lấy mã Hash của commit:
git reflog
hoặc
git log --oneline
Ta có thể xem được mã Hash cũng như trạng thái của commit.
Tài liệu tham khảo:
- https://git-scm.com/docs/git-checkout
- https://www.atlassian.com/git/tutorials/using-branches/git-checkout
Trên đây mình đã giới thiệu cho các bạn một số câu lệnh cơ bản về git checkout, ở bài tiếp trong series git nâng cao mình sẽ giới thiệu cho các bạn về Git stash.