“`html
/* Basic CSS for readability – not strictly required by prompt but good practice */
body {
font-family: Arial, sans-serif;
line-height: 1.6;
margin: 0 auto;
max-width: 900px;
padding: 20px;
color: #333;
}
h1, h2, h3 {
color: #2c3e50;
}
h1 {
font-size: 2.5em;
text-align: center;
margin-bottom: 30px;
}
h2 {
font-size: 1.8em;
border-bottom: 2px solid #eee;
padding-bottom: 10px;
margin-top: 40px;
}
h3 {
font-size: 1.4em;
margin-top: 30px;
}
p {
margin-bottom: 15px;
}
ul {
list-style-type: disc;
margin-left: 20px;
margin-bottom: 15px;
}
ol {
list-style-type: decimal;
margin-left: 20px;
margin-bottom: 15px;
}
li {
margin-bottom: 8px;
}
pre {
background-color: #ecf0f1;
padding: 15px;
border-radius: 5px;
overflow-x: auto;
margin-bottom: 20px;
}
code {
font-family: “Courier New”, Courier, monospace;
color: #c0392b;
}
strong {
color: #e74c3c;
}
a {
color: #3498db;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
.intro {
font-size: 1.1em;
background-color: #f8f9fa;
border-left: 5px solid #3498db;
padding: 15px 20px;
margin-bottom: 30px;
border-radius: 4px;
}
Bạn có bao giờ đang say sưa code, bỗng dưng nhận được yêu cầu khẩn cấp phải fix bug trên một nhánh khác, trong khi code hiện tại vẫn còn dở dang và chưa sẵn sàng để commit? Hay đơn giản là bạn muốn kéo code mới nhất về nhưng lại lo lắng về những thay đổi cục bộ chưa được lưu? Đừng lo lắng, Git Stash chính là “vị cứu tinh” mà bạn đang tìm kiếm!
Trong bài viết này, chúng ta sẽ cùng nhau khám phá Git Stash – một tính năng mạnh mẽ của Git giúp các lập trình viên quản lý workflow một cách linh hoạt và hiệu quả hơn. Hãy cùng tìm hiểu cách tạm lưu thay đổi dễ dàng và thần tốc với Git Stash nhé!
1. Git Stash là gì và Tại sao bạn cần nó?
Git Stash là một lệnh trong Git cho phép bạn tạm thời lưu trữ (stash) các thay đổi chưa được commit trong thư mục làm việc (working directory) và khu vực dàn dựng (staging area) của bạn. Nó giống như việc bạn đặt công việc hiện tại vào một “ngăn kéo” tạm thời để có thể quay lại làm việc đó sau, mà không làm bẩn lịch sử commit của bạn.
Tại sao Git Stash lại quan trọng đến vậy?
- Chuyển đổi nhánh nhanh chóng: Khi bạn cần chuyển sang một nhánh khác để làm việc gấp (ví dụ: hotfix) mà không muốn commit những thay đổi dở dang.
- Làm sạch thư mục làm việc: Trước khi kéo code mới từ remote hoặc rebase, bạn có thể stash các thay đổi cục bộ để tránh xung đột không cần thiết hoặc giữ thư mục làm việc sạch sẽ.
- Thử nghiệm ý tưởng mới: Bạn muốn thử một ý tưởng code mới nhưng không chắc chắn về nó? Stash code hiện tại, thử nghiệm, và nếu không thành công, bạn có thể dễ dàng quay lại trạng thái ban đầu.
- Tránh commit dở dang: Thay vì phải tạo ra những commit “work in progress” vô nghĩa chỉ để chuyển nhánh, bạn có thể dùng stash để giữ lịch sử commit luôn sạch đẹp.
2. Các Lệnh Git Stash Cơ Bản bạn phải biết
Để tận dụng tối đa sức mạnh của Git Stash, bạn cần nắm vững các lệnh cơ bản sau:
2.1. Lưu trữ thay đổi: git stash hoặc git stash push
Đây là lệnh dùng để tạm lưu các thay đổi của bạn. Mặc định, nó sẽ lưu trữ cả file đã được thêm vào staging area và file chưa được thêm vào staging area.
git stash
Hoặc bạn có thể thêm một thông điệp mô tả cho stash để dễ quản lý hơn:
git stash push -m "Đang làm tính năng đăng nhập, cần fix bug khẩn cấp"
2.2. Xem danh sách các stash: git stash list
Lệnh này hiển thị tất cả các stash mà bạn đã tạo, với định dạng stash@{index}.
git stash list
Kết quả có thể trông như thế này:
stash@{0}: On feature/login: Đang làm tính năng đăng nhập, cần fix bug khẩn cấp
stash@{1}: On main: Đang thử nghiệm API mới
2.3. Áp dụng lại thay đổi: git stash apply
Lệnh này sẽ áp dụng lại các thay đổi từ stash gần nhất (mặc định là stash@{0}) vào thư mục làm việc của bạn, nhưng không xóa stash đó khỏi danh sách.
git stash apply
Để áp dụng một stash cụ thể (ví dụ: stash@{1}):
git stash apply stash@{1}
2.4. Áp dụng và xóa stash: git stash pop
Tương tự như git stash apply, nhưng sau khi áp dụng thành công, lệnh này sẽ xóa stash đó khỏi danh sách. Đây là lựa chọn phổ biến khi bạn chắc chắn không cần stash đó nữa.
git stash pop
Để pop một stash cụ thể:
git stash pop stash@{1}
2.5. Xóa một stash cụ thể: git stash drop
Nếu bạn muốn xóa một stash mà không áp dụng nó, hãy dùng lệnh này.
git stash drop stash@{1}
2.6. Xóa tất cả stash: git stash clear
Cẩn thận khi sử dụng lệnh này, nó sẽ xóa tất cả các stash của bạn mà không có xác nhận.
git stash clear
3. Các Kịch bản Nâng cao và Mẹo Hay với Git Stash
3.1. Stash chỉ một phần thay đổi (Interactive Stash)
Đôi khi bạn chỉ muốn stash một vài thay đổi nhỏ trong khi giữ lại những thay đổi khác. Git cho phép bạn làm điều này với tùy chọn --patch hoặc -p.
git stash push --patch
Lệnh này sẽ hiển thị từng khối thay đổi và hỏi bạn có muốn stash nó không (y/n/a/d/g/?).
3.2. Xem nội dung của một stash
Để xem sự khác biệt (diff) của một stash mà không cần áp dụng nó, bạn có thể dùng:
git stash show stash@{0}
Để xem chi tiết hơn (full diff):
git stash show -p stash@{0}
3.3. Tạo nhánh mới từ một stash
Nếu bạn nhận ra rằng các thay đổi trong stash thực sự là một tính năng hoặc một bản sửa lỗi cần được phát triển trên một nhánh riêng, bạn có thể tạo một nhánh mới từ stash đó:
git stash branch ten_nhanh_moi_tu_stash stash@{0}
Lệnh này sẽ tạo một nhánh mới, áp dụng stash đó vào nhánh mới, và sau đó xóa stash khỏi danh sách.
3.4. Khi nào nên dùng stash và khi nào nên commit?
- Dùng
git stashkhi:- Bạn đang làm việc dở dang, chưa hoàn thành một tính năng hay sửa lỗi nào cả.
- Bạn cần chuyển nhánh gấp để làm việc khác, hoặc kéo code mới.
- Bạn muốn giữ lịch sử commit sạch sẽ, không có các commit “WIP” (Work In Progress).
- Bạn muốn thử nghiệm một ý tưởng mà không muốn lưu vào lịch sử Git.
- Dùng
git commitkhi:- Bạn đã hoàn thành một đơn vị công việc logic, có thể kiểm tra và chạy được.
- Thay đổi đó có ý nghĩa và bạn muốn lưu nó vĩnh viễn vào lịch sử dự án.
- Code của bạn đã sẵn sàng để được người khác xem xét (review) hoặc merge.
Kết Luận
Git Stash là một công cụ vô cùng hữu ích, giúp các lập trình viên quản lý công việc 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. Bằng cách nắm vững các lệnh cơ bản và biết cách áp dụng trong các tình huống khác nhau, bạn sẽ tối ưu hóa được workflow phát triển của mình, tiết kiệm thời gian và tránh được những rắc rối không đáng có.
Hãy bắt đầu sử dụng Git Stash ngay hôm nay để trải nghiệm sự tiện lợi mà nó mang lại. Chúc bạn code vui vẻ và hiệu quả!
“`





