Bài 7: Hợp Tác Đỉnh Cao – Resolve Conflict Như Pro

Bước 1: Tạo Tình Huống Xung Đột – “Đặt Bẫy” Cho Git

Xung đột xảy ra khi hai người sửa cùng file trên nhánh khác nhau rồi merge. Hãy thử tạo tình huống:

  1. Đảm bảo bạn đã đẩy repo my-first-repo lên GitHub (từ bài 6).
  2. Mở hello.txt trên GitHub, sửa thành:
    Hello, Git!
    Edited online: Team A!

    Commit và đẩy lên nhánh master.

  3. Trên local, checkout nhánh feature-test (tạo nếu chưa có):
    git checkout -b feature-test

    Sửa hello.txt thành:

    echo "Edited locally: Team B!" >> hello.txt
    git add hello.txt
    git commit -m "Add Team B edit"

Bây giờ, cả hai phiên bản (online và local) sửa cùng dòng – chuẩn bị cho xung đột!

Bước 2: Merge Và Gặp Xung Đột – “Đối Mặt Thử Thách”

Quay lại nhánh master và merge feature-test:

git checkout master
git pull origin master  # Kéo thay đổi từ GitHub
git merge feature-test

Git sẽ báo lỗi:

Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then commit the result.

Mở hello.txt, bạn sẽ thấy:

Hello, Git!
<<<<<<< HEAD
Edited online: Team A!
=======
Edited locally: Team B!
>>>>>>> feature-test
  • <<<<<<< HEAD đến =======: Phiên bản từ master (GitHub).
  • ======= đến >>>>>>> feature-test: Phiên bản từ feature-test (local). Mình từng hoảng khi thấy “conflict”, nhưng hóa ra chỉ cần chọn hoặc kết hợp hai phiên bản!

Bước 3: Giải Quyết Xung Đột – “Hòa Giải Như Pro”

Chỉnh sửa hello.txt để kết hợp cả hai:

Hello, Git!
Edited online: Team A!
Edited locally: Team B!

Lưu file, đánh dấu xung đột đã giải quyết:

git add hello.txt
git commit

Git sẽ tự tạo message merge, kiểu:

Merge branch 'feature-test'

Kiểm tra trạng thái:

git status

Nếu không còn gì trong “Changes to be committed”, bạn đã thắng! Đẩy lên GitHub:

git push origin master

Mình từng quên git add sau khi sửa, merge bị lỗi – từ đó luôn kiểm tra kỹ!

Bước 4: Tránh Xung Đột – “Lái Xe An Toàn”

  • Pull Trước Khi Làm: Luôn git pull trước khi sửa file.
  • Giao Tiếp Team: Thảo luận với đồng đội để tránh sửa cùng chỗ.
  • Dùng Nhánh Riêng: Mỗi tính năng dùng nhánh riêng (VD: feature-login).

Mình từng không pull, làm xung đột với team – mất cả buổi giải quyết. Từ đó, luôn “lái xe an toàn”!

Mẹo Nhỏ Để Thành Công

  • Dùng Tool Hỗ Trợ: IDE như VSCode có giao diện giải quyết conflict dễ hơn.
  • Kiểm Tra Log: Dùng git log --graph để xem lịch sử merge.
  • Backup: Sao lưu file trước khi merge nếu không chắc chắn.

Thử Ngay

Tạo nhánh feature-conflict, sửa hello.txt thêm “Team C edit!”, commit. Rồi sửa cùng dòng trên GitHub, merge local để tạo xung đột, và giải quyết nó. Kiểm tra trên GitHub và nhắn mình nếu bạn muốn chia sẻ nhé!

Lời Kết Cho Series

Chúc mừng bạn đã hoàn thành series Học Git Cơ Bản! Từ cài đặt (bài 1), tạo repo (bài 2), commit (bài 3), undo (bài 4), nhánh (bài 5), đẩy lên GitHub (bài 6), đến xử lý xung đột (bài 7), bạn đã làm chủ Git cơ bản. Đây là nền tảng vững chắc để bạn hợp tác với team và quản lý code như pro. Nếu muốn học sâu hơn (VD: rebase, cherry-pick), cứ bảo mình – mình sẵn sàng mở series mới! Cảm ơn bạn đã đồng hành – chúc bạn “code mượt” nhé! 🚀

Điều hướng chuỗi bài viết<< Bài 6: Git Remote – Kết Nối Với GitHub
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận