Git Rebase: Gộp nhiều commit thành một để tối ưu hóa lịch sử commit

Trong quá trình phát triển phần mềm, việc quản lý commit là một yếu tố quan trọng. Khi làm việc trên một tính năng hoặc một vấn đề cụ thể, chúng ta thường tạo ra nhiều commit nhỏ để lưu trữ các thay đổi. Tuy nhiên, để giữ cho lịch sử commit gọn gàng và dễ đọc, chúng ta có thể muốn gộp các commit này thành một commit duy nhất. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết cách sử dụng câu lệnh git rebase để thực hiện việc này.

Bước 1: Di chuyển vào nhánh chứa các commit cần gộp

Trước tiên, hãy đảm bảo bạn đang ở trên nhánh chứa các commit mà bạn muốn gộp. Sử dụng lệnh sau để chuyển đổi sang nhánh đó:

git checkout <tên_nhánh>

Giả sử bạn đang làm việc trên một nhánh có tên “feature-x” và đã tạo ra 5 commit nhỏ khi thực hiện tính năng đó. Bạn muốn gộp các commit này thành một commit duy nhất để giữ cho lịch sử commit sạch sẽ.

git checkout feature-x

Bước 2: Chạy lệnh rebase với tùy chọn -i

Sau khi chuyển sang nhánh chứa các commit, chạy lệnh rebase với tùy chọn -i (interactive) để mở giao diện tương tác cho việc chỉnh sửa lịch sử commit:

git rebase -i HEAD~<số_lượng_commit>

Ở đây, <số_lượng_commit> là số lượng commit bạn muốn gộp. Ví dụ, nếu bạn muốn gộp 5 commit cuối cùng, bạn có thể sử dụng HEAD~5.

git rebase -i HEAD~5

Sau khi chạy lệnh trên, một giao diện tương tác sẽ mở trong trình soạn thảo mặc định của bạn, hiển thị danh sách các commit từ cũ đến mới. Mỗi commit sẽ có một dòng bắt đầu bằng “pick”.

pick a1b2c3d First commit
pick e4f5g6h Second commit
pick i7j8k9l Third commit
pick m1n2o3p Fourth commit
pick q4r5s6t Fifth commit

# Rebase b123456..q4r5s6t onto b123456 (5 commits)
#
# Commands:
# ...

Bước 3: Sửa lịch sử commit

Bây giờ, bạn sẽ chỉnh sửa lịch sử commit để gộp các commit lại với nhau. Chuyển các dòng “pick” sang “squash” (hoặc viết tắt là “s“) cho các commit bạn muốn gộp vào commit trước đó.

Ví dụ, để gộp commit thứ hai, thứ ba và thứ tư vào commit đầu tiên, bạn sẽ sửa thành:

pick a1b2c3d First commit
squash e4f5g6h Second commit
squash i7j8k9l Third commit
squash m1n2o3p Fourth commit
pick q4r5s6t Fifth commit

# Rebase b123456..q4r5s6t onto b123456 (5 commits)
#
# Commands:
# ...

Sau đó lưu và đóng trình soạn thảo bằng cách nhấn phím ESC và gõ :x

Bước 4: Sửa thông điệp commit (nếu cần)

Nếu bạn muốn chỉnh sửa thông điệp commit, bạn có thể làm điều đó sau khi lưu và đóng trình soạn thảo ở bước trước. Một trình soạn thảo khác sẽ mở ra cho phép bạn chỉnh sửa thông điệp commit của commit gộp.

Bước 5: Hoàn thành quá trình rebase

Sau khi lưu và đóng trình soạn thảo, quá trình rebase sẽ bắt đầu. Git sẽ áp dụng các thay đổi đã chọn và gộp các commit lại thành một commit duy nhất.

Bước 6: Push lên nhánh từ xa

Cuối cùng, hãy đảm bảo rằng bạn push các thay đổi lên nhánh từ xa của mình để lưu trữ commit đã gộp:

git push -f origin feature-x

Bằng cách làm như vậy, bạn đã thành công gộp nhiều commit thành một commit duy nhất trên nhánh “feature-x“. Lịch sử commit trở nên sạch sẽ và dễ đọc hơn, tối ưu hóa quá trình phát triển phần mềm của bạn.

Oh My Zsh: Nâng cao trải nghiệm terminal với giao diện đẹp và các plugin tăng hiệu suất! Git cherry-pick là gì? Cách sử dụng và ví dụ 11 tính năng JavaScript mới tuyệt vời trong ES13 (ES2022) CSS diệu kỳ: Các thuộc tính CSS mà bạn có thể chưa biết Auto deploy projects với GitHub Actions – sử dụng ssh-action WordPress Gutenberg Block Server Side Render Add, Upload image trong Gutenberg Block Development Tạo Block Controls – Block Toolbar và Settings Sidebar trong WordPress Gutenberg Làm quen với các components thường dùng khi tạo Gutenberg Block Gutenberg Block Attributes

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.