Git: Interactive Rebase và Stash — mấy lệnh cứu mạng cho dev solo

Phong

Git: Interactive Rebase và Stash — mấy lệnh cứu mạng cho dev solo

Hổng biết mấy bạn có giống mình không, hồi mới học Git mình chỉ biết có add, commit, push, pull. Mỗi lần commit sai, message viết ẩu, hay đang làm dở mà phải sang branch khác là mình xoay như chong chóng.

Rồi một ngày mình quyết định ngồi học mấy lệnh Git nâng cao tí. Hai lệnh mình dùng nhiều nhất bây giờ chắc là git rebase -igit stash. Dùng một thời gian rồi mới thấy tiếc sao hông học sớm hơn.

Office work — workspace của dev Ảnh: Marvin — Pexels

Interactive Rebase — dọn dẹp commit history

git rebase -i HEAD~n cho phép mình edit, squash, reorder mấy commits gần nhất. Thay vì để mớ commits lộn xộn với messages kiểu "fix bug", "fix bug thiệt", "fix bug lần 3 thiệt luôn" — giờ mình gom hết thành 1 commit sạch sẽ trước khi push. Nhìn lịch sử Git gọn gàng, dễ review, dễ revert sau này.

Mình có thói quen mỗi sáng rebase với main trước khi bắt đầu code. Vừa cập nhật code mới, vừa xử lý conflict sớm. Có hôm PR của mình được approve ngay vì maintainer khen commit history dễ theo dõi. Thiệt chứ không đùa!

Git Stash — cất đồ tạm thời, lấy ra khi cần

Chuyện quen thuộc: đang làm tính năng A, sếp kêu hotfix B gấp. Mình chưa commit xong, mà commit cái code dở thì kỳ lắm. git stash push -m "WIP: feature A" — cất hết changes vào chỗ an toàn. Xong hotfix, quay lại git stash pop, làm tiếp. Dễ như ăn bánh.

Có lần mình pop stash mà bị conflict căng luôn — mất cả buổi chiều ngồi gỡ. Từ đó mình rút ra bài học: trước khi pop, dùng git stash list coi stash nào đang có, rồi git stash show -p stash@{n} xem thử trong đó có gì. Tip nhỏ xíu mà đỡ đau đầu thiệt nhiều.

Diagram planning — visualize branch Ảnh: ThisIsEngineering — Pexels

Ngoài ra mình cũng hay xài git blame để coi ai viết cái bug đó, rồi git log --oneline --graph để visualize nhánh. Một khi đã quen mấy lệnh này, Git không còn là nỗi sợ — nó trở thành công cụ đắc lực mỗi ngày.

Bạn có mẹo Git nào hay hông? Chia sẻ dưới comment nha, mình học hỏi với!

📋 Phụ lục thuật ngữ

  • Interactive rebase — chế độ rebase tương tác, cho phép sửa, gộp, xoá, sắp xếp commit
  • Squash — gộp nhiều commit nhỏ lẻ thành 1 commit duy nhất (giữ message)
  • Stash — lưu tạm working directory changes mà không cần commit
  • Blame — lệnh Git xem ai đã sửa dòng code nào lần cuối cùng