Sử dụng Branches:
Git Branch rất đơn giản, nó sẽ có định danh và một con trỏ hướng tới commit. Các nhánh trong kho lưu trữ sẽ được đặt tên là master và được tạo tự động ngay lập tức. Do đó, bạn có thể thực hiện commit ngay tức thì và tiếp tục phát triển phần mềm trong loạt commit. Trong khi đó Git sẽ tự động cập nhật con trỏ nhánh theo cách mà nó luôn hướng tới commit mới nhất.
Git có tính năng gắn thẻ rất hữu dụng, cho phép bạn có thể gắn thẻ cụ thể bằng văn bản mà người dùng có thể đọc. Thông thường việc này được sử dụng để gắn thẻ các bản phát hành, khi code trong nhánh cụ thể đủ ổn định để được phát hành nhưng cũng có thể được sử dụng cho mục đích khác. Ví dụ: nếu dự án của bạn trải qua một số thử nghiệm thủ công, người thử nghiệm chỉ tạo các bản dựng mới sau mỗi vài lần cam kết và gắn thẻ nó bằng một số bản dựng. Chúng sẽ bao gồm một số bản dựng trong báo cáo sự cố, để sau này nhà phát triển có thể sử dụng bản dựng tương tự để khắc phục sự cố. Và thẻ này là một con trỏ tham chiếu giống như nhánh, với sự khác biệt là khi được tạo, chúng không thể thay đổi được.
Git sử dụng một con trỏ tham chiếu đặc biệt có tên là HEAD, con trỏ này cho biết bạn đang ở đâu trong kho lưu trữ vào thời điểm hiện tại. Nói cách khác, nó sẽ xác định những gì mà thư mục làm việc hiện tại của bạn. Bạn có thể thao tác nó bằng cách sử dụng lệnh git checkout.
Sau này, bạn muốn tách khỏi nhánh chính và tạo một nhánh mới, nơi bạn có thể làm việc mà không ảnh hưởng đến các nhánh khác. Và để làm được điều đó, bạn có thể sử dụng lệnh git branch, lệnh này chỉ đơn giản là tạo một nhánh mới, hướng đến commit hiện tại. Nếu bạn đang kiểm tra một nhánh, HEAD bắt đầu phản chiếu con trỏ nhánh, có nghĩa là nó đang trỏ đến đỉnh của nhánh. Trong trường hợp này, bạn đang ở trạng thái được gọi là “đính kèm”. Khi bạn tạo một commit khác, cả con trỏ nhánh và HEAD, sẽ cập nhật con trỏ của chúng để tham chiếu nó.
Nếu khi bạn cần kiểm tra một commit, bạn có thể sử dụng lệnh git checkout, thêm một mã băm hoặc một thẻ cam kết cụ thể, nếu có. Trong trường hợp này, HEAD đang trỏ trực tiếp đến một commit thay vì sao chép một nhánh. Ở trạng thái tách rời này cho phép bạn chạy, kiểm tra hoặc khắc phục sự cố phần mềm. Tuy nhiên, nếu bạn muốn cam kết một thay đổi, trước tiên bạn cần phải quay lại trạng thái đính kèm. Để làm điều đó, bạn có thể tạo một nhánh mới ở trạng thái tách rời hoặc kiểm tra một nhánh hiện có.
Đôi khi, bạn đang làm việc thì gặp một số lỗi buộc bạn phải sửa chữa khẩn cấp hoặc thậm chí chuyển nhánh. Thì trước khi làm điều đó, đầu tiên bạn cần làm sạch thư mục làm việc của mình. Thay vì tạo một nhánh tạm thời và thực hiện công việc chưa hoàn thành, bạn có thể chọn lưu tất cả các tệp đã sửa đổi của mình vào ảnh chụp nhanh riêng được gọi là kho lưu trữ. Theo mặc định, lệnh git stash sẽ lưu cả tệp đã sửa đổi và tệp theo từng giai đoạn. Vì bạn có thể lưu nhiều tệp được lưu trữ một cách độc lập, nên bạn cũng nên đặt mô tả cho lệnh git stash.
Bạn có thể áp dụng lại kho lưu trữ bất cứ lúc nào bằng lệnh git stash pop. Điều này cũng có thể xảy ra ở các nhánh khác với nơi bắt nguồn kho lưu trữ.
$ git status -s
M my_network.py
$ git stash push -m "Work in progress"
Saved working directory and index state On feature: Work in progress
$ git status
On branch feature
nothing to commit, working tree clean
$ git stash pop
On branch feature
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: my_network.py