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
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ó:
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 ...
git stash
hoặcgit 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ếpgit checkout b_task2
=>git stash pop
nếu trước đó dùnggit stash
hoặcgit reset HEAD~1
hoặcgit 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àodevelop
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)git stash
hoặcgit 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ếpgit checkout b_task2
=>git stash pop
nếu trước đó dùnggit stash
hoặcgit reset HEAD~1
hoặcgit commit --amend
nếu trước đó commit tạm thời. Branch hiện tại làb_task2
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ùnggit log --oneline
(lấy mã hash cũ dựa theo commit message)