Mục Lục
1. Chức năng của lệnh Git Stash
Lệnh git stash
trong Git được sử dụng để lưu tạm thời các thay đổi chưa được commit vào một khu vực riêng biệt gọi là “stash”. Điều này giúp bạn giữ cho working directory và staging area sạch sẽ, để bạn có thể chuyển sang một công việc khác mà không mất các thay đổi hiện tại. Dưới đây là một số chức năng và tùy chọn của lệnh git stash
:
1.1. Lưu các thay đổi vào stash:
git stash
Lệnh này lưu tất cả các thay đổi chưa được commit (thay đổi trong working directory và staging area) vào stash và khôi phục working directory về trạng thái sạch sẽ.
1.2. Lưu các thay đổi và thêm thông tin mô tả:
git stash save "Thông tin mô tả"
Bạn có thể thêm thông tin mô tả để giúp bạn nhận diện stash sau này.
1.3. Hiển thị danh sách các stash:
git stash list
Lệnh này hiển thị danh sách các stash mà bạn đã lưu.
1.4. Áp dụng stash vào working directory:
git stash apply
Lệnh này áp dụng các thay đổi từ stash gần nhất vào working directory mà không xóa stash khỏi danh sách. Nếu bạn muốn áp dụng một stash cụ thể, bạn có thể chỉ định nó bằng cách sử dụng stash@{n}
, nơi n
là chỉ số của stash trong danh sách.
1.5. Áp dụng stash và xóa stash khỏi danh sách:
git stash pop
Lệnh này áp dụng các thay đổi từ stash gần nhất vào working directory và sau đó xóa stash khỏi danh sách.
1.6. Xóa stash:
git stash drop
Lệnh này xóa stash gần nhất khỏi danh sách. Bạn có thể chỉ định stash cụ thể bằng cách sử dụng stash@{n}
.
Xóa tất cả các stash:
git stash clear
Lệnh này xóa tất cả các stash trong danh sách.
1.7. Lưu các thay đổi chưa được commit và các tệp không theo dõi:
git stash -u
Tùy chọn -u
hoặc --include-untracked
cho phép lưu các tệp không theo dõi cùng với các thay đổi đã được theo dõi.
Lưu các thay đổi bao gồm cả tệp chưa theo dõi và các tệp đã bị loại bỏ:
git stash -a
Tùy chọn -a
hoặc --all
cho phép lưu tất cả các tệp, bao gồm cả các tệp bị loại bỏ (ignored files).
2. Lịch sử của lệnh Git Stash
Lệnh git stash
đã được giới thiệu vào Git từ những phiên bản sớm của hệ thống quản lý phiên bản này, nhưng không có một bản ghi chi tiết cụ thể về thời điểm chính xác lệnh này được thêm vào. Tuy nhiên, tôi có thể cung cấp một số thông tin tổng quan về lịch sử và sự phát triển của git stash
:
- Ra mắt:
git stash
được giới thiệu trong phiên bản 1.5.0 của Git vào tháng 3 năm 2008. Đây là một tính năng quan trọng để hỗ trợ các nhà phát triển trong việc quản lý các thay đổi chưa được commit mà họ cần tạm thời gác lại. - Mục đích và tính năng: Lệnh này được thiết kế để cho phép người dùng lưu các thay đổi chưa được commit (cả trong working directory và staging area) vào một khu vực tạm thời (stash) để có thể chuyển đổi nhanh chóng giữa các công việc khác mà không cần phải commit các thay đổi chưa hoàn tất. Đây là một tính năng quan trọng cho các quy trình phát triển phần mềm khi cần thử nghiệm hoặc xử lý vấn đề khác mà không muốn làm bẩn lịch sử commit chính.
- Tính năng mở rộng: Trong các phiên bản sau này, Git đã mở rộng các tùy chọn và khả năng của
git stash
. Một số cải tiến quan trọng bao gồm:- Tùy chọn
-u
: Cho phép lưu các tệp không theo dõi cùng với các thay đổi đã được theo dõi. - Tùy chọn
-a
: Cho phép lưu tất cả các tệp, bao gồm cả các tệp bị loại bỏ. - Tùy chọn
--include-untracked
: Tương tự như-u
, lưu các tệp không theo dõi. - Tùy chọn
--all
: Tương tự như-a
, lưu tất cả các tệp.
- Tùy chọn
- Ứng dụng:
git stash
đã trở thành một công cụ thiết yếu trong công việc hàng ngày của các nhà phát triển sử dụng Git, đặc biệt là khi làm việc trên các nhánh khác nhau hoặc khi cần tạm thời gác lại một số thay đổi để xử lý các vấn đề khẩn cấp. - Tài liệu và hỗ trợ: Git cung cấp tài liệu và hướng dẫn chi tiết về
git stash
trên trang chính thức của Git và các nguồn tài liệu khác, giúp người dùng hiểu rõ hơn về cách sử dụng và tối ưu hóa lệnh này trong quy trình phát triển của họ.
Xin chào,
Bài viết này sử dụng AI ChatGPT để viết sau đó được lựa chọn, biên tập lại nội dung, chỉ một phần nhỏ các bài là tôi tự viết. Nội dung thể hiện ý chí cá nhân về các vấn đề, giải pháp. Tôi lưu tại website này để học, tra cứu và chia sẻ.
Tôi là Minh, sống tại Hà Nội, kỹ sư phần mềm với hơn 20 năm kinh nghiệm. Các ngôn ngữ yêu thích của tôi là Swift, Objective-C, Java, Kotlin, .NET, HTML, JavaScript, CSS, Bootstrap, jQuery, AngularJS, Angular…
Các bạn có thể tải app của tôi trên App Store hoặc Google Play:
QuestionBank-Ôn thi vào 10: phiên bản iOS, phiên bản Android
TypingTest by QuestionBank: phiên bản iOS, phiên bản Android
Xin cảm ơn,
Minh