git conflict và cách giải quyết

      1 Comment on git conflict và cách giải quyết

Để đọc được bài viết này, giả sử bạn đã có kiến thức căn bản về git branch. Nếu chưa, vui lòng đọc bài viết git branch và mô hình pull request trước khi tiếp tục.

Tình huống

Khi làm việc nhóm, pull, push, merge code, sẽ có trường hợp hai người cùng chỉnh sửa một file, một dòng code, khi đồng bộ sẽ xảy ra xung đột (conflict).
Khi bạn làm việc với nhiều branch, nhảy qua nhảy về, commit, sửa chung một dòng code, cũng sẽ xảy ra conflict.
Trên đây là hai tình huống thường gặp về git conflict.
Vậy giải quyết nó thế nào? Có khó không?

Code chút thôi

Mở terminal, tạo project mới với tên demo_conflict

Tạo master branch và thêm file vào, sửa và commit:

Tiếp đến tạo conflict branch và thêm dòng thứ hai vào rồi commit lên conflict branch

Đến đây là xong khâu chuẩn bị, quay về master và sinh ra conflict thôi:
Trình tự như sau: trong khi bên conflict branch chỉnh sửa dòng 2, và commit lên, thì bên master mình cũng chỉnh sửa dòng 2 và commit lên bên này. Mọi thứ vẫn ok, cho đến khi ta thực hiện ghép code bên conflict branch vào master bằng lệnh merge hoặc rebase, ở ví dụ này mình dùng merge:

Đến đây là conflict xảy ra (để s dòng 9, 10 và 11), mở file file_in_master ra và ta sẽ nhận được:

git đã gom hết nội dung của hai branch lại và chỉ rõ cho ta là bị conflict ở dòng nào, dòng nào thuộc branch nàonào. Ở trên HEAD tức là cái commit cuối cùng của branch mà mình đang đứng (master).
Công việc của mình bây giờ là chỉnh sửa file này lại theo ý mình muốn, trong ví dụ này, mình giữ lại thay đổi của cả hai branch:

Sau đó tiến hành add vào git indexcommit như bình thường thôi:

Lưu ý rằng conflict branch bên kia vẫn y nguyên, không ảnh hưởng gì cả, do mình chỉ thực hiện lấy code bên kia ghép vào bên này thôi mà 🙂

Thêm chút nữa

Sử dụng merge sẽ hạn chế được conflict hơn rebase, tại sao vậy? Mời bạn đọc bài viết Sự khác biệt giữa Git Rebase and Git Merge của tác giả @vinhnglx trên github để hiểu rõ hơn.

Lập trình và hơn thế nữa

Spread the love
  •  
  •  
  •  
  •  
  •  

Leave a Reply

1 Comment on "git conflict và cách giải quyết"

Notify of
avatar
Sort by:   newest | oldest | most voted
trackback

[…] theo. Vậy, làm sao để giải quyết những conflict này? Vui lòng đọc bài viết git conflict và cách giải quyết của mình. Có một cách để hạn chế bi từ chối oull request này, đó là trước […]