Khái niệm Git stash
Git Stash là gì?
Git Stash giúp bạn tạo ra và quản lý một loạt các thay đổi (commits) liên quan đến nhau một cách dễ dàng. Thay vì chỉ có một chuỗi commit thẳng đứng, bạn có thể có nhiều nhánh nhỏ chứa các thay đổi liên quan. Điều này giúp bạn sắp xếp và hệ thống được các thay đổi theo thứ tự logic, dễ dàng duyệt qua và xem lại từng thay đổi một cách tuần tự.
Trong working directory, để bạn có thể chuyển đổi sang một nhánh khác hoặc thực hiện các công việc khác mà không mất đi những thay đổi chưa hoàn thành. Sau khi hoàn thành công việc khác, bạn có thể áp dụng lại các thay đổi đã lưu trữ một cách dễ dàng.
Cách thức hoạt động của Git Stash
- Lưu trữ các thay đổi: Khi bạn chạy lệnh git stash, Git sẽ lưu lại tất cả các thay đổi trong working directory và index (staging area) vào một khu vực lưu trữ tạm thời gọi là stash stack. Working directory và index của bạn sẽ trở về trạng thái của commit cuối cùng.
- Quản lý các thay đổi: Bạn có thể lưu nhiều mục stash khác nhau, mỗi mục được lưu trong một stack. Các mục này có thể được áp dụng lại, xóa hoặc quản lý theo nhu cầu của bạn.
- Áp dụng lại các thay đổi: Khi bạn cần áp dụng lại các thay đổi đã lưu trữ, bạn có thể sử dụng các lệnh như git stash apply hoặc git stash pop.
>> Xem thêm: Tổng hợp kiến thức về Git cho người mới bắt đầu
Các lệnh cơ bản của Git Stash
Git stash
git stash
là lệnh cơ bản nhất khi sử dụng Git stash, nó giúp lưu trữ các thay đổi hiện tại trong working directory và index vào stash.
Git stash save – Lưu lại thay đổi
Git stash
được sử dụng khi muốn lưu lại các thay đổi chưa commit, thường rất hữu dụng khi bạn muốn đổi sang 1 branch khác mà lại đang làm dở ở branch hiện tại.
Muốn lưu toàn bộ nội dung công việc đang làm dở, bạn có thể sử dụng git stash
như sau
Khi này branch đã trở nên “sạch sẽ” và git status
sẽ cho thấy bạn có thể chuyển sang branch tuỳ thích. Bạn có thể git stash
bao nhiêu lần tuỳ thích và mỗi lần đó git sẽ lưu toàn bộ lần thay đổi đó như 1 phần tử trong 1 stack.
Git stash list – Xem lại thay đổi
Sau khi đã git stash 1 hoặc vài lần, bạn có thể xem lại danh sách các lần lưu thay đổi bằng câu lệnh
Khi muốn apply lại thay đổi từ stash lần 1 bạn có thể
Git stash apply
Lệnh này sẽ chiếm phần trên cùng trong stack và apply nó vào repo. Trong trường hợp này là stash@{0}
Nếu bạn muốn áp dụng một số stash khác, bạn có thể chỉ định stash id.
Đây là một ví dụ:
git stash apply stash@{1}
Git stash pop
Lệnh này rất giống với stash apply nhưng nó xóa stash từ stack sau khi nó được áp dụng.
Câu lệnh:
# Giả sử bạn đã lưu trữ các thay đổi git stash # Bây giờ bạn muốn áp dụng các thay đổi đó và xóa stash khỏi danh sách git stash pop
Nếu bạn muốn một stash cụ thể để “pop”, bạn có thể chỉ định stash id.
git stash pop stash@{1}
Git stash show
Lệnh này chỉ ra bản tóm tắt của các stash diff. Lệnh trên chỉ xem xét về stash mới nhất.
Câu lệnh:
# Giả sử bạn đã stash một số thay đổi git stash # Bạn có thể xem các thay đổi trong stash gần nhất git stash show # Bạn cũng có thể chỉ định stash id để có được tóm tắt diff. git stash show stash@{0}
Nếu bạn muốn xem full diff, bạn có thể sử dụng
git stash show -p
Git stash branch <name>
Lệnh này tạo ra một nhánh mới với một stash hiện thời, và sau đó xóa các stash mới nhất (như stash pop).
Nếu bạn cần một stash cụ thể bạn có thể chỉ định stash id.
git stash branch <name> stash@{1}
Điều này thật sự hữu ích khi bạn gặp rắc rối sau khi đã áp dụng stash vào phiên bản mới nhất của chi nhánh.
Git stash clear
Lệnh này xóa tất cả các stash được tạo ra trong repo này và có thể không thể revert.
# Xóa tất cả các stash đã lưu trữ git stash clear
Git stash drop
Lệnh này sẽ xoá stash mới nhất khỏi stack, nhưng hãy dùng nó cẩn thận, có thể sẽ khó để revert.
Bạn cũng có thể chỉ định stash id.
git stash drop stash@{1}
Sau khi tìm hiểu toàn bộ nội dung về Git Stash, ta có thể thấy Git Stash giúp bạn duy trì một luồng làm việc có tổ chức, dễ theo dõi và kiểm soát, đặc biệt hữu ích trong các dự án lớn và phức tạp.
Bài viết gốc được đăng tải tại Freecodecamp