Làm chủ Git Stash: Hướng dẫn chi tiết cho lập trình viên

Trong quá trình phát triển phần mềm, việc tạm dừng công việc hiện tại để chuyển sang một nhiệm vụ khác là điều không thể tránh khỏi. Git Stash là một công cụ mạnh mẽ giúp bạn giải quyết vấn đề này một cách hiệu quả. Bài viết này sẽ cung cấp cho bạn cái nhìn sâu sắc về Git Stash, từ cơ bản đến nâng cao, giúp bạn làm chủ công cụ này và nâng cao năng suất làm việc.

Nhàn hơn cùng git stash!Nhàn hơn cùng git stash!

Bạn đang tập trung viết code cho một tính năng mới, bỗng nhiên trưởng nhóm thông báo rằng có một lỗi nghiêm trọng trên bản production cần được khắc phục ngay lập tức. Bạn đang có nhiều thay đổi dở dang và chưa commit. Để giải quyết tình huống này, bạn có thể:

  • git reset --hard: Xóa bỏ tất cả các thay đổi chưa commit. (Cách này không được khuyến khích vì bạn sẽ mất hết công sức).
  • Commit các thay đổi dở dang: Tạo ra một commit không hoàn chỉnh và có thể gây khó hiểu cho lịch sử commit. (Đây cũng không phải là giải pháp tốt).

Git Stash chính là giải pháp tối ưu trong trường hợp này. Nó cho phép bạn tạm thời “cất” các thay đổi chưa commit của mình, đưa working directory trở về trạng thái sạch sẽ, để bạn có thể chuyển sang giải quyết các nhiệm vụ khác. Sau khi hoàn thành, bạn có thể dễ dàng “lấy” lại các thay đổi đã stash và tiếp tục công việc dang dở.

Nhàn hơn cùng git stash!Nhàn hơn cùng git stash!

Chắc hẳn nhiều lập trình viên đã từng sử dụng git stashgit stash pop một cách bản năng. Tuy nhiên, để khai thác tối đa sức mạnh của Git Stash, chúng ta cần hiểu rõ hơn về các lệnh và tùy chọn khác nhau mà nó cung cấp.

Dưới đây là danh sách các lệnh Git Stash hữu ích mà bạn nên biết:

  1. git stash save
  2. git stash list
  3. git stash apply
  4. git stash pop
  5. git stash show
  6. git stash branch
  7. git stash clear
  8. git stash drop

Hãy cùng khám phá chi tiết từng lệnh này:

1. git stash save

Lệnh git stash save được sử dụng để lưu trữ các thay đổi chưa commit vào một stash mới. Đây là lệnh cơ bản nhất và thường được sử dụng nhất của Git Stash.

  • git stash save "message": Lưu trữ các thay đổi với một thông điệp mô tả. Điều này giúp bạn dễ dàng phân biệt các stash khác nhau trong danh sách. Ví dụ:

    git stash save "Fix bug login page"
  • git stash save -u hoặc git stash save --include-untracked: Lưu trữ cả những file chưa được theo dõi (untracked files). Mặc định, git stash chỉ lưu trữ các thay đổi trên các file đã được theo dõi. Nếu bạn muốn stash cả những file mới tạo, bạn cần sử dụng tùy chọn này. Ví dụ:

    git stash save -u "Add new feature"

2. git stash list

Lệnh git stash list hiển thị danh sách tất cả các stash đã được lưu trữ trong repository của bạn.

git stash list

Kết quả trả về sẽ có dạng:

stash@{0}: WIP on master: 4e22905 Fix bug login page
stash@{1}: On master: Add new feature

Mỗi stash được gán một ID (ví dụ: stash@{0}, stash@{1}), cho biết thứ tự stash được tạo (stash gần nhất sẽ có ID nhỏ nhất). Ngoài ra, thông điệp mà bạn đã cung cấp khi tạo stash cũng được hiển thị, giúp bạn dễ dàng xác định stash cần thiết.

3. git stash apply

Lệnh git stash apply được sử dụng để áp dụng các thay đổi từ một stash vào working directory của bạn.

  • git stash apply: Áp dụng stash gần nhất (stash@{0}).

    git stash apply
  • git stash apply stash@{id}: Áp dụng một stash cụ thể bằng cách chỉ định ID của nó. Ví dụ:

    git stash apply stash@{1}

Lệnh git stash apply sẽ không xóa stash sau khi áp dụng. Stash vẫn sẽ tồn tại trong danh sách và bạn có thể áp dụng nó nhiều lần nếu cần.

4. git stash pop

Lệnh git stash pop tương tự như git stash apply, nhưng nó sẽ xóa stash sau khi áp dụng.

  • git stash pop: Áp dụng và xóa stash gần nhất (stash@{0}).

    git stash pop
  • git stash pop stash@{id}: Áp dụng và xóa một stash cụ thể bằng cách chỉ định ID của nó. Ví dụ:

    git stash pop stash@{1}

Nếu bạn chắc chắn rằng bạn không cần stash nữa sau khi áp dụng, git stash pop là lựa chọn phù hợp để giữ cho danh sách stash của bạn gọn gàng.

5. git stash show

Lệnh git stash show hiển thị thông tin về những thay đổi được lưu trữ trong một stash.

  • git stash show: Hiển thị thông tin về stash gần nhất (stash@{0}).

    git stash show

    Lệnh này sẽ hiển thị một bản tóm tắt ngắn gọn về các thay đổi.

  • git stash show -p: Hiển thị chi tiết các thay đổi (diff) trong stash gần nhất.

    git stash show -p

    Tùy chọn -p (patch) cho phép bạn xem chi tiết nội dung thay đổi trong stash.

  • git stash show stash@{id}: Hiển thị thông tin về một stash cụ thể bằng cách chỉ định ID của nó. Ví dụ:

    git stash show stash@{1}
    git stash show -p stash@{1}

6. git stash branch

Lệnh git stash branch tạo một branch mới, áp dụng stash gần nhất vào branch đó và xóa stash đó khỏi danh sách stash.

git stash branch <branch_name>

Ví dụ:

git stash branch fix-login-bug

Lệnh này sẽ tạo một branch mới có tên fix-login-bug, áp dụng các thay đổi từ stash gần nhất vào branch đó và xóa stash đó khỏi danh sách.

Lệnh này đặc biệt hữu ích khi bạn gặp xung đột (conflict) khi áp dụng stash vào branch hiện tại. Bằng cách tạo một branch mới, bạn có thể giải quyết xung đột một cách dễ dàng hơn.

7. git stash clear

Lệnh git stash clear xóa tất cả các stash đã được lưu trữ trong repository của bạn.

git stash clear

Cảnh báo: Lệnh này sẽ xóa vĩnh viễn tất cả các stash. Hãy chắc chắn rằng bạn đã áp dụng hoặc không cần bất kỳ stash nào trước khi sử dụng lệnh này.

8. git stash drop

Lệnh git stash drop xóa một stash cụ thể khỏi danh sách.

  • git stash drop: Xóa stash gần nhất (stash@{0}).

    git stash drop
  • git stash drop stash@{id}: Xóa một stash cụ thể bằng cách chỉ định ID của nó. Ví dụ:

    git stash drop stash@{1}

Cảnh báo: Lệnh này sẽ xóa vĩnh viễn stash được chỉ định.

Kết luận

Git Stash là một công cụ vô cùng hữu ích cho các lập trình viên làm việc với Git. Nó giúp bạn dễ dàng tạm dừng và tiếp tục công việc, quản lý các thay đổi chưa commit và giải quyết các tình huống phát sinh trong quá trình phát triển phần mềm. Bằng cách nắm vững các lệnh và tùy chọn khác nhau của Git Stash, bạn có thể nâng cao năng suất làm việc và quản lý dự án một cách hiệu quả hơn.

Hy vọng bài viết này đã cung cấp cho bạn những kiến thức cần thiết để làm chủ Git Stash. Chúc bạn thành công!

Tài liệu tham khảo