---
title: "Tối Ưu Hóa Workflow Hiệu Quả Với Git Stash: Tạm Lưu Thay Đổi Thần Tốc Cho Dev"
description: "Tối Ưu Hóa Workflow Hiệu Quả Với Git Stash: Tạm Lưu Thay Đổi Thần Tốc Cho Dev /* Basic CSS for readability - not strict..."
date: "2025-10-30"
author:
  name: "Nguyen Pham"
  role: "Xin chào. Mình thích lập trình và công nghệ. Đây là blog mình chia sẻ lại các kiến thức về lập trình, công nghệ."
  avatar: "http://0.gravatar.com/avatar/6fb61398e24046b34e13870dd6c357b9?s=128&d=mm&r=g"
category: "Blog"
tags: ["Blog"]
coverImage: "https://2k1.org/wp-content/uploads/2025/10/create-a-professional-eye-catching-blog-header-im_1761788590.jpg"
featured: false
readingTime: "9 min read"
---

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 stash` khi:**
  - 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 commit` khi:**
  - 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ả!
