Menu
CoddyTech

Git Stash

Cập nhật lần cuối

git stash cất tạm các thay đổi chưa commit và đưa working tree về trạng thái sạch, để bạn chuyển nhánh hoặc pull mà không phải commit phần việc còn dở. Các thay đổi được đẩy vào một ngăn xếp (stack) mà sau này bạn áp dụng lại bằng git stash pop (áp dụng rồi xóa) hoặc git stash apply (áp dụng và giữ lại).

Bạn có thể thử các lệnh này trong terminal playground: một shell thật ngay trên trình duyệt, không cần cài đặt gì.

git stash cất các thay đổi chưa commit vào một ngăn xếp và dọn sạch working tree; pop lấy chúng ra lại sau.

Cú pháp

LệnhTác dụng
git stashCất tạm thay đổi trên tệp tracked, làm sạch working tree
git stash -uStash cả tệp untracked
git stash push -m "msg"Stash kèm thông điệp mô tả
git stash push <file>Chỉ stash một tệp cụ thể
git stash listLiệt kê mọi stash
git stash popÁp dụng lại stash mới nhất rồi xóa nó
git stash applyÁp dụng lại stash mới nhất, giữ nó lại
git stash dropXóa stash mới nhất
git stash clearXóa mọi stash

pop và apply

Đặc điểmgit stash popgit stash apply
Áp dụng lại thay đổiCóCó
Xóa stash sau đóCóKhông
Phù hợp để dùng lại stashKhôngCó

Câu hỏi thường gặp về git stash

git stash làm gì?
Lệnh này lưu các thay đổi chưa commit vào một ngăn xếp và đưa working tree về commit cuối cùng, cho bạn một trạng thái sạch. Thay đổi không mất đi: chúng được cất tạm và có thể áp dụng lại sau bằng git stash pop hoặc git stash apply. Rất tiện khi bạn cần chuyển nhánh nhưng chưa sẵn sàng commit.
git stash pop và git stash apply khác nhau thế nào?
Cả hai đều áp dụng lại stash gần nhất vào working tree. git stash pop còn xóa stash đó khỏi ngăn xếp sau khi áp dụng, còn git stash apply giữ nó lại để bạn áp dụng lần nữa ở chỗ khác. Dùng pop khi chỉ cần khôi phục một lần, apply khi muốn dùng lại stash.
git stash có lưu tệp untracked không?
Mặc định là không: git stash thông thường chỉ cất tạm các tệp tracked (đã sửa). Thêm -u (git stash -u) để lấy cả tệp untracked, hoặc -a để lấy luôn tệp bị ignore. Không có các cờ này, những tệp mới bạn chưa git add vẫn nằm lại trong working tree.
Làm sao áp dụng một stash cụ thể?
Chạy git stash list để xem các stash được đánh số dạng stash@{0}, stash@{1}, rồi git stash apply stash@{1} (hoặc pop) để áp dụng lại đúng stash đó. Mỗi stash còn hiện nhánh và thông điệp lúc tạo, nên bạn dễ phân biệt chúng.
Có thể luyện tập lệnh này online không?
Có. Mở terminal playground để chạy git stash trong một shell thật ngay trên trình duyệt, không cần cài đặt gì. Khóa học Git tương tác miễn phí của Coddy cũng hướng dẫn từng bước cách quản lý phần việc đang dở.
Hình minh họa các ngôn ngữ lập trình của Coddy

Học Git cùng Coddy

Bắt đầu