Cách dùng git để quản lý project?

mình đang train ở 1 cty mà bọn này bắt phải dùng github để quản lý cũng như review code , chuyện là mình làm project với 2 đứa nữa nhưng cứ mỗi lần code xong 1 task là phải push lên đợi họ review rồi mới pull code mới về code tiếp mà mỗi lần review lại lâu nữa sợ không làm kịp … giờ mình muốn hỏi là
vd:
mình làm xong task 1 >> commit >> push lên github , trong thời gian chờ mình có nên tạo 1 branch mới để làm task khác không , nhưng nhiều khi họ review và mình bị lỗi ở phần nào đó trong task 1 cần phải sử rồi push lại , vậy trong trường hợp này mình có nên tạo 1 branch mới để làm task 4 không mình chỉ sợ đang làm task 4 nó bắt sửa task 1 nữa thì ko biết làm thế nào …

Bạn có thể đọc thêm tài liệu về stash và merge branch
Vì phải chờ nên bạn không tránh được việc sẽ merge liên tục.
Theo ý kiến mình thì nhóm các bạn tạo 2 - 3 branch là được rồi.
1 cái master, còn 2 cái dev+review chẳng hạn.
Vì dù review đi nữa thì code yêu cầu thay đổi cũng sẽ không nhiều nếu bạn “code sạch”, đến lúc merge sẽ rất nhàn

1 Like

Hi Cong.
Bạn có thể đọc cuốn git pro để biết rõ hơn về git. Hoặc từ khóa “Workflows git”
https://git-scm.com/book/en/v2/Git-Branching-Branching-Workflows

Về cơ bản thì bạn thường có:

  1. Nhánh phát hành chứa bản ổn định của dự án.
  2. Nhánh test chứa bản được bổ sung chức năng và chờ kiểm thử nếu OK thì được trộn với nhánh (1) để ra một bản phát hành mới.
  3. Các nhánh phát triển mỗi chức năng code trên một nhánh riêng sau khi xong thì trộn với nhanh (2) để test.
  4. Nhánh sửa lỗi khi có lỗi thì tách ra một nhánh sửa lỗi rồi gộp lại.
1 Like

Hướng dẫn áp dụng nếu team của bạn đang làm theo git flow này.

Làm task 1 xong ở branch b_task1 => đợi review
Muốn làm task 2

  • Nếu task 2 không phụ thuộc task 1 =>

    • git checkout develop (hoặc master)
    • git checkout -b b_task2
    • git commit ...
    • Reviewer comment => cần phải sửa task 1 => git stash hoặc git commit tạm thời những thay đổi hiện tại => git checkout b_task1 => git commit --amend => git push origin b_task1 -f, sửa xong task 1 lại quay lại task 2 làm tiếp git checkout b_task2 => git stash pop nếu trước đó dùng git stash hoặc git reset HEAD~1 hoặc git commit --amend nếu trước đó commit tạm thời. Vì cả 2 branch task 1 và task 2 đều phụ thuộc vào develop nên có thể làm độc lập.
  • Nếu task 2 phụ thuộc task 1 =>

    • git checkout -b b_task2 (khi đang ở b_task1)
    • git commit ... (do task)
    • Reviewer comment => cần phải sửa task 1 => git stash hoặc git commit tạm thời những thay đổi hiện tại => git checkout b_task1 => git commit --amend => git push origin b_task1 -f, sửa xong task 1 lại quay lại task 2 làm tiếp git checkout b_task2 => git stash pop nếu trước đó dùng git stash hoặc git reset HEAD~1 hoặc git commit --amend nếu trước đó commit tạm thời. Branch hiện tại là b_task2
      • Vì task 1 đã thay đổi code, nên nếu muốn code ở task 2 đồng bộ với task 1 thì dùng git rebase --onto=b_task1 sha_commit_cũ_của_task_1, fix conflict nếu có, để biết sha của commit cũ của task 1 dùng git log --oneline (lấy mã hash cũ dựa theo commit message)
      • Nếu update code ở task 1 không quan trọng lắm hoặc không ảnh hưởng đến flow của task 2 thì không cần update, đợi task 1 được merge vào develop rồi rebase với develop sau.
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?