Một số trường hợp khi làm việc nhóm với Git
Trường hợp 1: Người khác push code, thêm file vào branch mình đang code
Dùng git pull để đồng bộ code về
git pull
Khi sử dụng mặc định lệnh git pull hệ thống sẽ lấy code từ remote tại branch chỉ định (local branch hiện tại) về và thực hiện merge ngay tại đó.
Trường hợp 2: Xây dựng module riêng, không làm ảnh hưởng đến source code chính của team
Tạo branch mới và code trong đó
git branch <name_branch>
git checkout <name_branch>
Trường hợp 3: Push code sang branch khác
Từ branch featureA push code sang branch featureB
Nếu không có branch featureB, hệ thống sẽ tự tạo featureB và push vào.
git push origin featureA:featureB
Nếu ở Github, sau khi push hệ thống sẽ tạo một merge request bằng việc click vào nút Compare & pull request tại trang github.
Ở Gitlab, sau khi push terminal sẽ tạo một link merge request để người dùng có thể thực hiện merge request.
Github:
Gitlab:
Trường hợp 4: Module từ branch của bạn đã hoàn thành và sẵn sàng dùng cho source code chính của team
Trong branch GitLab của bạn, nhấn vào Create merge request để gửi yêu cầu merge vào branch master (mặc định).
Trường hợp 5: Merge branch B vào branch A
git checkout featureA
git merge featureB
Trường hợp 6: Đã commit nhưng quên thêm một số file và không muốn commit lại
git commit -m "first commit"
git add index.html
git commit --amend --no-edit
Trường hợp 7: Lấy lại code từ các commit trước
Xem lại lịch sử tất cả commit
git log
Lấy code từ commit về, ví dụ ở đây mình lấy code từ commit “add SSHKey.png from README.md”:
git checkout 24a4b438e7ee79fa3eafcde3dccc479c4dce4df
Sau khi chỉnh sửa xong, tạo một branch và checkout qua branch đó
# Sử dụng checkout -b để vừa tạo branch vừa checkout. Rất tiện.
$ git checkout -b <name branch>
Cuối cùng, thực hiện add và commit lại bình thường.
git add .
git commit -m 'your commit here'
Lúc này code mới của bạn đang ở branch vừa mới tạo. Bạn có thể giữ nguyên branch đó hoặc thực hiện merge vào branch cũ của mình.
Trường hợp 8: Lấy lại code từ các commit trước
Mô tả: trường họp bạn đã commit branch-A và cả branch-B
# Đang ở branch-A
$ git add .
$ git commit -m 'commit A'
# Commit thêm branch-B
$ git checkout branch-B
$ git cherry-pick branch-A
# Commit của branch-A sẽ được add và merge vào branch-B.
Trường hợp 9: SubModule
Submodule giúp bạn mang 1 repo khác (repo phụ) bỏ vào repo đang làm việc. Điều này giúp việc tái sử dụng code hiệu quả hơn.
$ git submodule add <link> <path>
# example
$ git submodule add git@github.com:TommyGitHubs/Test.git ./internal/cropbase
-
Hệ thống sẽ tạo một đường dẫn thư mục theo path để chứa submodule.
-
Việc bạn xây dựng trên đây sẽ không ảnh hưởng đến repo phụ (gốc).