30/09/2018, 18:43

Cách chia công việc để tránh conflict khi merge code và cách xử lí conflict trên GIT

Có ai chia sẽ giúp mình về kinh nghiệm phân chia task làm việc để khi code hạn chế việc code bị conflict khi merge với thành viên khác ?

Trên GIT, khi conflict code xảy ra thì mọi người hay xử lí conflict như thế nào? Xử lí bằng cách review code và sửa bằng tay hay dùng một tool nào ? Cám ơn.

lê tuấn anh viết 20:54 ngày 30/09/2018

Conflict có thể xảy ra ở một module chung mà mọi người trong team cùng dùng và chỉnh sửa. Cách đơn giản để xử lý conflict là so sánh. Bạn sẽ luôn có 1 bản clone và 1 bản dev, khi bắt đầu merge hay rebase thì bạn copy nguyên cái gốc (ở bản clone mới nhất), sau đó update phần bạn làm ở phía cuối.

Quân viết 20:56 ngày 30/09/2018

Mình chưa hiểu phần copy nguyên cái gốc lắm.
Có phải khi merge thí copy 1 bản ra để backup hả bạn?

Với lại có 1 vấn đề nữa, Khi các nhóm bắt đầu làm các nhiệm vụ khác nhau, họ clone ở master về, sau đó làm phần của họ. Khi mình merge thì nhóm đầu tiên sẽ rất nhàn vì họ thay đổi gì so với master là mình biết. Nhưng các nhóm sau thì khó quá vì các nhóm sau thay đổi so với master ban đầu và master lại thay đổi so với ban đầu vì đã ghép với nhóm đầu tiên. Dẫn đến nhóm sau thay đổi rất nhiều mà mình khó biết được thay đổi những phần nào.

Mong các bạn chỉ cách.

Florastamine viết 20:45 ngày 30/09/2018

Ý bạn là so sánh changes của nhóm thứ 2, 3, 4… so với master ban đầu hay master sau khi được merged với nhóm 1? Nếu là so với master ban đầu thì cách của mình là lùi về HEAD^1 (HEAD^1 là master trước khi merge) rồi diff với branch của nhóm 2, 3, 4…

Quân viết 20:57 ngày 30/09/2018

mình muốn tại master đã merge với nhóm 1. so sánh với các nhóm khác để merge tiếp ý bạn. Thực sự hơi khó.

Dark.Hades viết 20:51 ngày 30/09/2018

Cách của mình vẫn làm là luôn thực hiện pull trước khi push.
Người push sau sẽ thực hiện diff nếu gặp conflic, tiếp theo là merge các đoạn code được đánh dấu <<<<<<<<< >>>>>>>>> với nhau.

Hiện tại thì chỉ có cách thủ công đó. (Mình dùng terminal nên không biết bên GUI có phần giao diện để select không)

Quân viết 20:59 ngày 30/09/2018

Mình đang cho 3 nhóm làm 3 nhánh khác nhau, khi họ làm xong, push lên, mình sẽ checkout sang nhánh của họ xem thay đổi gì và gộp nó vào bằng tay những thay đổi đó.

Do vậy các đoạn code đánh dấu <<<<<<>>>>>>> sẽ không xuất hiện.

Mà cùng 1 nhánh, nhiều khi họ push lên, sau mình checkout sang nhánh của họ và pull nhánh của họ về mà dùng git diff nó chả hiện cái gì hết.

Bài liên quan
0