Skip to content

3. Push & Pull (Sync)

IMPORTANT

GOAL: Đồng bộ code với Remote Repository mà không gây ra xung đột (conflicts) không cần thiết hoặc làm bẩn lịch sử (dirty history).

3.1 Gửi code lên Remote (git push)

Sau khi commit, code vẫn chỉ nằm ở máy local của bạn. Để đồng nghiệp thấy, bạn phải push.

bash
git push origin main

(origin: tên mặc định của remote server, main: tên branch)


3.2 Lấy code về (git pull)

Để cập nhật code mới nhất từ đồng nghiệp.

Bản chất của git pull

Rất nhiều người lầm tưởng pull là một lệnh đơn giản. Thực tế:

git pull = git fetch (Tải code về ẩn) + git merge (Gộp code vào branch hiện tại)

Hành vi mặc định này thường tạo ra một Merge Commit thừa thãi (dạng "Merge branch 'main' of..."), làm lịch sử commit trở nên rối rắm.


HPN'S TIP #3: ALWAYS USE REBASE

Tại PENALGO, chúng ta ưu tiên lịch sử tuyến tính (linear history).

Thay đổi thói quen của bạn ngay lập tức:

Đừng dùng: git pull (mặc định) ✅ Hãy dùng: git pull --rebase

bash
git pull --rebase origin main

Sự khác biệt:

  • Merge (Mặc định): Tạo ra một đường rẽ nhánh và gộp lại -> Lịch sử như mạng nhện.
  • Rebase: Tạm thời gỡ các commit của bạn ra, cập nhật code mới từ server, sau đó đắp (replay) commit của bạn lên trên cùng -> Lịch sử thẳng tắp, sạch đẹp.

NOTE

Nếu có conflict khi rebase, Git sẽ dừng lại. Bạn cần sửa conflict, sau đó chạy git rebase --continue. Tuyệt đối bình tĩnh, đây là quy trình chuẩn.