Git: Stash


Đăng ký nhận thông báo về những video mới nhất
Stash

Giới thiệu

Khi làm việc với Git, sẽ có những lúc bạn cần chuyển sang nhánh khác để code. Tuy nhiên, khi thực hiện các thao tác trên với các thay đổi chưa được Commit, Git có thể sẽ không cho phép bạn thực hiện điều đó. Dưới đây là một ví dụ về một thông báo nhắc nhở của VS Code khi bạn thực hiện việc chuyển nhánh khi chưa Commit thay đổi hiện thời:

Với thông báo này, bạn có 3 hướng xủ lý để có thể tiếp tục chuyển nhánh:

Bạn có thể nhấn nút Force Checkout để chuyển nhánh luôn, nhưng việc này có thể sẽ khiến đoạn code đang dang dở kia bị mất, và việc phải viết lại code thật không hề dễ chịu chút nào.

Hoặc, bạn có thể nhấn nút Cancel và Commit các thay đổi kia. Tuy nhiên việc Commit code chưa hoàn thiện không thực sự là một ý tưởng hay, vì làm như vậy sẽ khiến cho Commit History của  repo bạn đang làm việc trông rất rối, và các Commit như vậy sẽ bị coi là những Commit không có ý nghĩa.

Vậy, trong bài viết này, chúng ta sẽ cùng tìm hiểu về hướng thứ 3: Stash

Stash là gì? Làm thế nào để có thể Stash các thay đổi trong code?

Để dễ hình dung về chức năng này, bạn hãy hình dung nó giống như việc bạn Reset repo vậy, nhưng thay vì bị mất các thay đổi trong code, thì chúng sẽ được Commit lên một "bộ nhớ tạm" của Git vậy. Việc này sẽ khiến cho nhánh làm việc hiện tại sẽ trở về trạng thái "sạch sẽ", các thay đổi trước đó vẫn sẽ được ghi nhận và bạn có thể thực hiện việc chuyển nhánh một cách bình thường.

Để Stash các thay đổi trong nhánh, bạn làm như sau, lưu ý là các hướng dẫn ở đây sử dụng VS Code:

Bạn chuyển sang tab Source Control của VS Code

Tại đây, bạn mở Menu của Source Control lên, chọn vào Stash -> Stash, nếu trong nhánh có cả những file mới tạo, bạn có thể sử dụng tùy chọn Stash (Include Untracked) để Stash chúng cùng với các file có thay đổi:

Sau đó, bạn nhập nội dung của lần Stash này, và nhấn Enter. Lưu ý là dù không bắt buộc phải nhập, nhưng bạn vẫn nên nhập một mô tả ngắn gọn cho Stash, việc này sẽ giúp bạn dễ dang phân biệt giũa các lần Stash hơn:

Vậy là xong, các thay đổi trong code của bạn đã được ghi nhớ, và bạn có thể chuyển nhánh và làm việc bình thường.

Lấy lại các thay đổi trong Stash, và loại bỏ các Stash

Vậy là ta đã biết cách để Stash các thay đổi, và giờ, sau khi bạn đã hoàn thành việc trên nhánh kia, giờ là lúc bạn quay lại với phần code dang dở kia, lúc này bạn sẽ lấy lại Stash trước đó để tiếp tục code. Để lấy lại thay đổi đã Stash, bạn làm như sau:

Bạn chuyển sang tab Source Control của VS Code 

Tiếp theo bạn mở Menu của Source Control lên, mở mục Stash, lúc này để lấy lại Stash, chúng ta có các lựa chọn sau:

Apply Latest Stash: Lấy lại các thay đổi đã Stash ở lần Stash mới nhất.

Apply Stash...: Lấy lại các thay đổi đã Stash, lúc này bạn sẽ được yêu cầu lựa chọn lần Stash muốn lấy lại.

Pop Lastest Stash: Tương tự việc Apply Lastest, nhưng sẽ xóa (Drop) lần Stash mới nhất sau khi đã Apply xong.

Pop Stash...: Tương tự việc Apply, nhưng sẽ xóa (Drop) lần Stash đã chọn sau khi đã Apply

Các thay đổi lúc này đã được lấy lại, và bạn sẽ nhìn thấy chúng được xuất hiện trở lại dưới dạng các thay đổi chưa được Commit:

Mẹo: Để xem chi tiết về các lần Stash trong VS Code, bạn có thể cài đặt Extension Git Stash, ,Extension này sẽ thêm một mục Stashes nằm ở tab Source Control, khi nhấn vào các Stash, bạn sẽ được nhìn thấy chi tiết các thay đổi về lần Stash đó:

Để xóa (Drop) Stash, bạn mở menu của Source Control -> Stash -> Drop Stash, chọn Stash muốn Drop, và bạn sẽ được yêu cầu xác nhận việc xóa bỏ: nhấn nút Yes để xóa Stash đó:

Đăng ký nhận thông báo về những video mới nhất
« Prev: Git: Quy trình công việc Forking
» Next: Git: SVN sang Git - chuẩn bị cho migration
Copied !!!