Chào anh em! Hôm nay mình muốn chia sẻ với anh em một số trường hợp sử dụng Git nâng cao mà mình đã áp dụng trong quá trình làm việc. Hy vọng những kinh nghiệm này sẽ giúp anh em quản lý dự án của mình hiệu quả hơn.
1. Sử Dụng Git Rebase Để Tái Cấu Trúc Lịch Sử Commit
Git rebase là một công cụ mạnh mẽ để tái cấu trúc lại lịch sử commit của anh em. Sử dụng rebase có thể giúp giữ cho lịch sử commit sạch sẽ và dễ theo dõi hơn.
Ví dụ thực tế:
Mình thường có một nhánh feature
đang làm việc và muốn tích hợp những thay đổi từ nhánh master
vào nhánh này.
# Chuyển sang nhánh feature git checkout feature # Tái cấu trúc lại lịch sử commit của nhánh feature với những thay đổi từ master git rebase master
Nếu có xung đột, anh em chỉ cần giải quyết chúng và tiếp tục rebase:
# Sau khi giải quyết xung đột
git add .
git rebase --continue
2. Sử Dụng Git Cherry-Pick Để Chọn Lọc Commit
Git cherry-pick cho phép anh em chọn lọc và áp dụng những commit cụ thể từ nhánh khác vào nhánh hiện tại.
Kinh nghiệm cá nhân:
Mình đã commit một số thay đổi quan trọng trên nhánh feature
và muốn mang những thay đổi này vào nhánh master
mà không cần merge toàn bộ nhánh feature
.
# Chuyển sang nhánh master
git checkout master
# Chọn lọc commit có hash là abc123 từ nhánh feature và áp dụng nó vào nhánh master
git cherry-pick abc123
3. Sử Dụng Git Stash Để Lưu Trữ Tạm Thời Những Thay Đổi
Git stash rất hữu ích khi anh em đang làm dở dang và cần chuyển đổi sang một nhánh khác mà không muốn commit các thay đổi chưa hoàn thành.
Trải nghiệm của mình:
Đôi khi mình đang làm việc trên nhánh feature
nhưng cần chuyển sang nhánh master
để xử lý một vấn đề khẩn cấp.
# Lưu trữ tạm thời những thay đổi hiện tại git stash # Chuyển sang nhánh master để làm việc git checkout master # Sau khi hoàn tất, quay lại nhánh feature và áp dụng lại những thay đổi đã lưu trữ git checkout feature git stash pop
4. Sử Dụng Git Bisect Để Tìm Ra Commit Gây Ra Lỗi
Git bisect giúp anh em tìm ra commit cụ thể gây ra lỗi bằng cách chia đôi lịch sử commit và kiểm tra lần lượt.
Ví dụ từ dự án của mình:
Khi phát hiện ra một lỗi và muốn tìm ra commit nào đã gây ra lỗi này, mình làm như sau:
# Bắt đầu quá trình bisect
git bisect start
# Đánh dấu commit hiện tại là bị lỗi
git bisect bad
# Đánh dấu commit không bị lỗi gần đây nhất
git bisect good abc123
# Git sẽ tự động chuyển sang commit ở giữa để mình kiểm tra
# Sau khi kiểm tra, mình đánh dấu commit này là tốt (good) hoặc xấu (bad)
git bisect good/bad
# Tiếp tục quá trình cho đến khi tìm ra commit gây ra lỗi
5. Sử Dụng Git Amend Để Sửa Commit Message
Git commit --amend cho phép anh em sửa commit gần đây nhất. Điều này rất hữu ích khi anh em cần sửa lỗi hoặc cập nhật message của commit.
Trải nghiệm của mình:
Giả sử mình vừa tạo một commit nhưng nhận ra rằng commit message cần được thay đổi hoặc commit vừa rồi còn thiếu code cần sửa thêm 1 chút nữa mà không muốn tạo commit mới (Cái này mình rất hay bị luôn)
# Sửa commit gần đây nhất
git add .
git commit --amend -m "New commit message"
# Nếu anh em đã lỡ push commit lên nhánh remote rồi thì phải thêm --force hoặc cách viết ngắn gọn là -f vào nữa nhé.
git push -f
Nếu cần sửa message của những commit cũ hơn, mình sử dụng git rebase -i (interactive rebase) để chỉnh sửa.
# Bắt đầu một rebase tương tác cho các commit gần đây
git rebase -i HEAD~n
Trong đó n
là số commit gần đây mà mình muốn chỉnh sửa. Thay đổi "pick" thành "reword" đối với các commit mà mình muốn sửa message, sau đó lưu lại và thoát. Git sẽ cho phép anh em chỉnh sửa message của các commit đó.
Kết Luận
Git là một công cụ mà chắc hẳn tất cả anh em đều cần biết và làm việc với nó hàng ngày, trong thực tế chúng ta có thể gặp rất nhiều trường hợp phức tạp và đau đầu. Hiểu và áp dụng các tính năng này sẽ giúp anh em làm việc hiệu quả hơn, giảm thiểu rủi ro và giữ cho lịch sử dự án của mình gọn gàng và dễ hiểu hơn. Hy vọng những chia sẻ này hữu ích cho anh em. Chúc anh em thành công!
Discussion (undefined)