Git stash là gì? 8 lệnh git stash hữu ích và cách dùng

Công Nghệ
Git stash là gì? 8 lệnh git stash hữu ích và cách dùng
Git Stash là một khái niệm và công cụ dùng để quản lý các chuỗi thay đổi (stack of changes) trong Git, thường được sử dụng trong các dự án phần mềm phức tạp. Nó giúp phát triển và duyệt qua các thay đổi theo cách có tổ chức hơn,...
Git Stash là một khái niệm và công cụ dùng để quản lý các chuỗi thay đổi (stack of changes) trong Git, thường được sử dụng trong các dự án phần mềm phức tạp. Nó giúp phát triển và duyệt qua các thay đổi theo cách có tổ chức hơn, đặc biệt là khi làm việc với nhiều nhánh và nhiều yêu cầu pull (pull requests). Dưới đây là một số thông tin chi tiết về Git Stack.

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

$ git stash save # or just "git stash"

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

$ git stash list
stash@{0}: WIP on : 
stash@{1}: WIP on : 
stash@{2}: WIP on : 
Nếu muốn xem cả nội dung của từng thay đổi thì thêm option -p
$ git stash list -p
hoặc xem nội dung cụ thể hơn nữa của lần thay đổi thứ 1:
$ git stash show stash@{1}

Khi muốn apply lại thay đổi từ stash lần 1 bạn có thể

$ git stash apply stash@{1}

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

     

Bài viết liên quan

Ngành IT: Làm việc “trên mây” kiếm nhiều tiền nhất hiện nay

Ngành IT: Làm việc “trên mây” kiếm nhiều tiền nhất hiện nay

Kết quả từ cuộc khảo sát đầu năm của Station D về lương bổng của lập trình viên cho thấy nhiều thay đổi đã và đang diễn ra trong ngành IT – cuộc khảo sát tập trung vào các câu hỏi về khối lượng công việc, triển vọng cũng như...

By stationd
Đâu chỉ mỗi Bitcoin, công nghệ Blockchain còn nhiều ứng dụng hơn thế!

Đâu chỉ mỗi Bitcoin, công nghệ Blockchain còn nhiều ứng dụng hơn thế!

Khi nhắc đến blockchain , lập tức mọi người thường nghĩ ngay đến các loại tiền mã hóa, chẳng hạn như bitcoin. Tuy nhiên, blockchain lại là công nghệ tạo ra tiền mã hóa nhưng bản thân công nghệ này không phải là tiền mã hóa như cách mà chúng...

By stationd
Mock phương thức static trong Unit Test sử dụng PowerMock

Mock phương thức static trong Unit Test sử dụng PowerMock

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Trong bài viết này, mình sẽ hướng dẫn các bạn Mock các phương thức static trong Unit Test các bạn nhé! Nếu bạn nào chưa biết về Mock trong Unit Test thì mình có thể nói sơ qua...

By stationd
Một "thuật ngữ ma" đã tồn tại 75 năm trên internet, nó đang "ám" vào các mô hình AI, và sẽ còn tiếp tục tồn tại cho đến vĩnh cửu

Một "thuật ngữ ma" đã tồn tại 75 năm trên internet, nó đang "ám" vào các mô hình AI, và sẽ còn tiếp tục tồn tại cho đến vĩnh cửu

Một lời cảnh báo cho những người thích trích dẫn kiểu "nguồn sưu tầm", "nguồn internet" hay "nguồn AI", họ có thể sẽ đào lên được những "hóa thạch số" vô nghĩa.

By admin
Cảnh Báo Malware Giả Mạo Hợp Đồng Việc Làm: Tập Tin .EXE Nguy Hiểm Đội Lốt PDF/Word

Cảnh Báo Malware Giả Mạo Hợp Đồng Việc Làm: Tập Tin .EXE Nguy Hiểm Đội Lốt PDF/Word

Kẻ xấu đang lợi dụng nhu cầu tìm việc để phát tán phần mềm độc hại (malware) dưới dạng tệp 'hợp đồng' giả mạo. Hãy cảnh giác với những file có icon Word/PDF nhưng thực chất là .exe. Nếu mở, máy tính của bạn có thể bị đánh cắp toàn bộ thông tin cá nhân, cookie và mật khẩu.

By admin