Làm bài nhóm với git

Chào mọi người ! chuyện là trong lớp thầy thường chia bài tập làm nhóm ! trong khi các nhóm khác hẹn ra quán trà sữa làm chung, gửi code qua Facebook, zalo,… thì em thấy không tiện cho lắm. Trước giờ em có dùng github để up code nhưng toàn tự chơi một mình, lần đầu dùng github làm project nhóm và các bạn khác cũng vậy, Em có tạo vài tài khoản github mỗi acc cho vào một máy ảo để test thử nhưng em thấy càng nhiều người tham gia càng dễ lỗi, xung đột nên nhờ mọi người chia sẻ kinh nghiệm với có quy tắc ngầm gì khi làm việc nhóm với git không ạ ?

1/ em sẽ demo trước một phần như khung sườn của project rồi commit lên master cho các bạn pull về code tiếp, mình có cần tạo cho mỗi người một branch riêng không ? hay chỉ cần chia ra vài branch rồi 2,3 người vào chung branch như develop, test kỹ rồi merge vào master ạ ?
2/ Ví dụ như nhiều người làm chung một chức năng, có thể code cùng 1 file trong cùng thời điểm thì có cách nào hạn chế conflict không ?
3/ VD 8:00AM em pull code trên repo về code tiếp cho đến 5:00PM trong khoảng thời gian đó em không fetch hay pull gì nữa, cũng trong khoảng thời gian đó các bạn em cũng code rồi commit liên tục. vậy lúc 5:00PM em pull về có bị mất code mình đang viết không ?
Cảm ơn mọi người

  1. Có 1 nhánh developer để test trước khi merge vào master là đúng rồi đấy. Mà mỗi người nên có 1 nhánh riêng làm sẽ tốt hơn.
  2. Làm cũng 1 file nếu sửa cùng với dòng mà người kia làm thì sẽ bị conflict. Kiểu như nên chia file thành các file nhỏ hơn rồi mỗi người làm trong đó sẽ tốt hơn.
  3. Thời gian cũng không ảnh hưởng gì cả, nếu như lúc pull master về thì nó sẽ update các code mà master có mà nhánh em không có thôi chứ không mất gì cả.
6 Likes
  1. Mỗi người tự giác tạo 1 branch thì tốt hơn. Mỗi người code từng branch, test kỹ rồi mới merge vào master.

  2. Tạo branch (như trên). Nói chung là 2 người biết mình đang làm gì thì sẽ code các chức năng tránh nhau ra -> giảm conflict.

    Ví dụ: người A code hàm f(), người B code hàm g() thì khi merge không ảnh hưởng gì, sắp xếp file lại 1 chút là ok.

  3. Không mất mát gì cả. Git sẽ update, trong đó báo đoạn nào conflict để bạn xử lí, còn những gì không conflict (code mới) sẽ tự thêm vào.

4 Likes

Đây là 1 git flow khá chuẩn được dùng nhiều trên thế giới, bạn follow thử để tránh mông lung: https://nvie.com/posts/a-successful-git-branching-model/
Atlanssian cũng viết khá rõ cái flow này: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
Ko cần phải install git flow mà chỉ cần làm theo concept của nó là được, rồi vọc vạch trên nó.
Theo mình thấy thì ko có cách nào hạn chế conflict nếu đang code chung file, thay vào đó để tránh conflict thì leader/member nên phân task hiệu quả.
Git thường chặt chẽ nên khó mất code, thường là do mình ko hiểu flow của git. hãy commit hoặc stash code hoặc tạo tmp branch nếu cần chắc ăn.

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?