Git Stash là gì? Hướng dẫn sử dụng hiệu quả cho mọi lập trình viên

Bùi Thị Thu Hà Bùi Thị Thu Hà

Trong quá trình phát triển phần mềm, đôi khi bạn cần tạm thời lưu trữ những thay đổi chưa hoàn thiện để chuyển sang một nhiệm vụ khác hoặc xử lý một lỗi khẩn cấp. Git stash chính là công cụ đắc lực giúp bạn thực hiện điều này một cách gọn gàng và hiệu quả. Bài viết này sẽ đi sâu vào phân tích git stash là gì, lý do cần sử dụng và hướng dẫn chi tiết cách áp dụng các lệnh liên quan.

Điểm cốt lõi về Git Stash: Git stash cho phép bạn lưu trữ tạm thời các thay đổi chưa commit của mình, trả lại thư mục làm việc sạch sẽ để bạn có thể chuyển đổi công việc hoặc xử lý các vấn đề khẩn cấp. Các thay đổi này được lưu trữ dưới dạng một "stack" (ngăn xếp), có thể được khôi phục lại bất cứ lúc nào.

Tại sao bạn cần sử dụng Git Stash?

Trong môi trường phát triển phần mềm, tính linh hoạt và khả năng thích ứng nhanh là yếu tố then chốt. Có nhiều tình huống mà git stash trở nên vô cùng hữu ích:

  • Chuyển đổi nhanh sang nhánh khác: Khi bạn đang làm dở một tính năng nhưng cần gấp rút kiểm tra hoặc sửa lỗi trên một nhánh khác, git stash giúp bạn cất đi những thay đổi hiện tại mà không cần commit vội.
  • Xử lý các tình huống khẩn cấp: Nếu có một lỗi nghiêm trọng cần khắc phục ngay lập tức, bạn có thể git stash công việc đang dang dở, xử lý lỗi, sau đó quay lại và tiếp tục công việc cũ.
  • Giữ cho lịch sử commit sạch sẽ: Thay vì thực hiện các commit tạm bợ chỉ để lưu lại thay đổi, git stash cho phép bạn giữ cho lịch sử commit của mình mạch lạc và ý nghĩa hơn.
  • Làm việc với các bản cập nhật từ xa: Đôi khi bạn cần kéo các thay đổi mới từ remote về máy, nhưng lại có những thay đổi cục bộ chưa sẵn sàng để commit. git stash giúp bạn làm sạch thư mục làm việc để việc pull diễn ra suôn sẻ.
Minh họa tại sao git stash lại quan trọng trong quy trình làm việc của lập trình viên
Git stash đóng vai trò quan trọng trong việc quản lý trạng thái làm việc chưa hoàn thiện.

Các lệnh Git Stash cơ bản và cách sử dụng

Git cung cấp một bộ lệnh mạnh mẽ để quản lý các stash. Dưới đây là những lệnh thông dụng nhất:

Lưu trữ thay đổi với git stash hoặc git stash push

Để lưu trữ các thay đổi hiện tại (bao gồm cả những thay đổi đã staged và unstaged trong các tệp đã được theo dõi), bạn sử dụng lệnh:

git stash

Lệnh này sẽ lưu lại trạng thái hiện tại của thư mục làm việc và khu vực staging, đồng thời làm sạch chúng. Nếu bạn muốn thêm một thông điệp mô tả cho stash để dễ nhớ, hãy sử dụng:

git stash push -m "Thông điệp mô tả stash của bạn"

Ví dụ:

git stash push -m "WIP: Đang phát triển tính năng đăng nhập"

Ví dụ về cách lưu trữ thay đổi bằng lệnh git stash push -m
Thêm thông điệp giúp nhận diện stash dễ dàng hơn.

Xem danh sách các Stash với git stash list

Khi bạn có nhiều stash, việc xem lại danh sách là cần thiết. Lệnh git stash list sẽ hiển thị tất cả các stash đã được lưu trữ, theo thứ tự từ mới nhất đến cũ nhất:

git stash list

Kết quả hiển thị sẽ có dạng:

stash@{0}: On main: WIP: Đang phát triển tính năng đăng nhập stash@{1}: On feature-branch: Thêm các thay đổi ban đầu cho API stash@{2}: WIP on main: abc1234 Thêm một số cập nhật nhỏ

Trong đó, stash@{0} là stash mới nhất.

Áp dụng lại Stash với git stash apply

Để khôi phục lại các thay đổi từ một stash, bạn sử dụng lệnh git stash apply. Theo mặc định, lệnh này sẽ áp dụng stash mới nhất (stash@{0}).

git stash apply

Nếu bạn muốn áp dụng một stash cụ thể, hãy chỉ định tên của nó:

git stash apply stash@{1}

Lưu ý: git stash apply sẽ khôi phục lại các thay đổi nhưng vẫn giữ stash đó trong danh sách. Điều này hữu ích khi bạn muốn áp dụng cùng một stash cho nhiều nhánh khác nhau.

Kết hợp áp dụng và xóa Stash với git stash pop

Nếu bạn chỉ muốn áp dụng một stash và sau đó xóa nó khỏi danh sách ngay lập tức, hãy sử dụng lệnh git stash pop.

git stash pop

Tương tự như apply, bạn có thể chỉ định stash cụ thể:

git stash pop stash@{2}

Đây là lệnh thường được sử dụng nhất khi bạn đã sẵn sàng tiếp tục công việc đã tạm lưu.

Xem chi tiết nội dung Stash với git stash show

Để xem những thay đổi nào đã được lưu trong một stash mà không cần áp dụng chúng, bạn dùng git stash show:

git stash show (hiển thị thay đổi của stash mới nhất)

git stash show stash@{1} (hiển thị thay đổi của stash cụ thể)

Lệnh này sẽ hiển thị tóm tắt về các tệp đã thay đổi. Để xem chi tiết từng dòng thay đổi, bạn có thể thêm tùy chọn -p (patch):

git stash show -p

Lưu ý khi sử dụng Git Stash

Mặc dù git stash rất tiện lợi, có một vài điểm bạn cần lưu ý:

  • Untracked files: Theo mặc định, git stash không lưu các tệp mới (untracked files). Để bao gồm cả các tệp này, bạn cần sử dụng tùy chọn -u hoặc --include-untracked: git stash -u.
  • Conficts: Khi áp dụng lại stash, có thể xảy ra xung đột nếu các thay đổi trong stash mâu thuẫn với những thay đổi hiện tại trên thư mục làm việc của bạn. Bạn sẽ cần giải quyết các xung đột này tương tự như khi merge hoặc rebase.
  • Stash với nhiều thay đổi phức tạp: Với các stash chứa nhiều thay đổi phức tạp hoặc trên nhiều tệp, việc áp dụng có thể cần sự cẩn trọng.

Kết luận

Git stash là một công cụ không thể thiếu trong bộ công cụ của bất kỳ lập trình viên nào sử dụng Git. Nó giúp bạn quản lý trạng thái làm việc của mình một cách linh hoạt, giữ cho thư mục làm việc luôn sạch sẽ và lịch sử commit gọn gàng. Hãy thực hành sử dụng các lệnh git stash apply, git stash pop, và git stash list thường xuyên để làm chủ công cụ này và nâng cao hiệu suất làm việc của bạn.

Bùi Thị Thu Hà
Bùi Thị Thu Hà

Kỹ sư phần mềm với 11 năm kinh nghiệm phát triển ứng dụng di động. Chuyên về Android và iOS.

Xem tất cả bài viết

Bình luận