Q

Quản trị viên

Là một lập trình viên yêu công nghệ, thích viết blog để chia sẻ kiến thức, kinh nghiệm lập trình và những điều thú vị trong thế giới tech.

2312 bài viết · Website
Công cụ 22/09/2026 5 phút

Git hooks: tự động kiểm tra trước commit/push — và vì sao hook không clone theo

Git có thể tự chạy script của bạn ở mỗi commit, mỗi push — chặn code lỗi, ép định dạng message, chạy test trước khi push. Bài này đo thật bằng git 2.39: pre-commit chặn commit chứa TODO, commit-msg bắt buộc mã ticket, và cái bẫy lớn nhất — hook nằm trong .git nên không clone theo, đồng đội không có.

Công cụ 22/09/2026 5 phút

Pipe và file descriptor: ba luồng của Unix, và bẫy thứ tự 2>&1

Pipe và chuyển hướng là nền của dòng lệnh Unix, nhưng nhiều người dùng mà không hiểu ba luồng stdin/stdout/stderr tách nhau thế nào — dẫn tới bẫy kinh điển: cmd 2>&1 > file lại KHÔNG gộp được lỗi vào file. Bài mở đầu sê-ri Unix đo thật bằng bash: tách stdout/stderr, và vì sao thứ tự của > và 2>&1 quyết định kết quả.

Công cụ 22/09/2026 5 phút

git worktree: một kho .git, nhiều thư mục làm việc song song

Cần code nhánh A mà vẫn build/test nhánh B cùng lúc? Stash làm mất ngữ cảnh, clone lại thì tốn dung lượng và tách rời kho. git worktree cho một .git dùng chung nhưng nhiều thư mục làm việc, mỗi cái ở một nhánh. Bài này đo thật: hai cây hai nhánh làm việc độc lập, commit ở cây này cây kia thấy ngay, và vì sao không checkout được cùng một nhánh ở hai cây.

Công cụ 22/09/2026 4 phút

git stash: cất tạm việc dở để đổi nhánh gấp — và khác biệt pop vs apply

Đang sửa dở nửa chừng thì sếp bảo fix bug gấp ở nhánh khác — commit thì chưa xong, bỏ thì mất. git stash cất thay đổi vào ngăn tạm để working tree sạch lại, làm việc khác rồi lấy ra tiếp. Bài này đo thật bằng git 2.39: stash bỏ qua file untracked (phải -u), apply giữ stash còn pop thì xóa, và bản chất stash là commit ẩn.