Cách Merge và Push code từ brand lên main hiệu quả mà không bị mất code
Em chào mọi người ạ, hiện nhóm em đang làm 1 dự án trên trường thì tụi em đã tạo 1 github theo thầy và trong đây có chứa Back-end và Front-end luôn. Tụi em có tạo thêm các brand khác, mỗi brand sẽ phụ trách 1 bên BE hoặc FE.
Vì xài chung 1 git nên tụi em push code lên brand mỗi người, check rồi sau đó merge lên main. Thì tụi em chưa hiểu tại sao có lúc khi merge tụi em làm mất 1 số code của người trước đó ở trên main. Sau 1 hồi làm thì tụi em thấy các vấn đề là code bị conflict và khi sửa thì lại lỡ xóa code người khác, hoặc chưa merge code mới từ main về trước,...
Thì không biết theo kinh nghiệm của anh/chị thì làm sao để đảm bảo các thành viên trong team push hay merge code của họ lên main thành công mà không làm mất code của thành viên khác đã ở trên main ạ ?
3 CÂU TRẢ LỜI
Luôn pull trước khi push: Trước khi đẩy code của mình lên, nhớ cập nhật những thay đổi mới nhất từ main về branch của bạn. Như vậy bạn sẽ chắc chắn rằng mình đang làm việc với phiên bản mới nhất và tránh gặp xung đột khi merge.
Luôn cập nhật branch khi bắt đầu làm việc: Trước khi bắt tay vào code, điều đầu tiên mình hay làm là kéo những thay đổi mới nhất từ main về branch của mình. Điều này giúp tránh việc phải sửa lỗi xung đột không cần thiết và đảm bảo code của mình tương thích với những thay đổi của các bạn trong team.
Đừng merge trực tiếp vào main, hãy tạo pull request: Khi cần merge code, đừng vội vàng đẩy thẳng lên main. Thay vào đó, tạo một pull request để các bạn khác trong nhóm có thể xem qua và cho ý kiến. Việc này không chỉ giúp bạn phát hiện lỗi mà còn giúp mọi người trong team hiểu rõ hơn về công việc của nhau.
Commit thường xuyên: Đừng đợi đến khi hoàn thành cả một phần lớn rồi mới commit. Hãy chia nhỏ các task và commit thường xuyên, vừa dễ kiểm soát thay đổi, vừa tránh rủi ro xung đột về sau.
Bạn có thể tham khảo thêm về các bài viết xây GIT workflow hiệu quả để hiểu rõ hơn, vì GIT workflow ảnh hưởng khá nhiều đến perform của cả team. https://www.atlassian.com/git/tutorials/comparing-workflows
@dovannam115 Oki anh. Em cảm ơn anh ạ 😍.
checkout từ nhánh main ra nhánh của bạn,sau khi code xong thì checkout lại về main rồi pull để lấy code mới nhất của main,rồi lại checkout về branch của bạn rồi merge main vào,sau đó thì push lên thôi
Chào bạn,
Haha, nghe câu chuyện của bạn về việc merge code như một bộ phim hành động, lúc nào cũng "thót tim" sợ mất code.
Đừng lo lắng! Có vẻ như bạn đang trong giai đoạn làm quen với Git và việc quản lý code chung của nhóm.
Vấn đề cốt lõi là việc giải quyết xung đột (conflict) khi merge chưa tốt
Nói một cách dễ hiểu, việc update branch về main hoặc ngược lại (lúc đó code đã có người sửa) giống như hai người cùng viết vào 1 tờ giấy, chắc chắn sẽ bị "xô" và "lộn xộn" .
Để xử lý hiệu quả, hãy thử các cách này:
- Thường xuyên
pull
code về từ main: Trước khi bắt đầu làm bất kỳ thay đổi nào, nênpull
branchmain
xuống branch của bạn để cập nhật code mới nhất. - Rebase thay vì Merge: Thay vì
merge
, thửrebase
.Rebase
sẽ tạo ra một lịch sử commit tuyến tính, dễ hiểu và dễ theo dõi hơn. ( Tuy nhiên, hãy cẩn thận khi sử dụng rebase trong môi trường làm việc chung, vì nó có thể gây ra những vấn đề phức tạp nếu không được thực hiện đúng cách) - Sử dụng Git GUI: nếu không quen với Git command line thì bạn có thể dùng các Git GUI (Sourcetree, GitKraken,...) nó sẽ giúp bạn trực quan hơn rất nhiều trong việc xử lý xung đột
- Làm việc với các commit nhỏ: Cố gắng thường xuyên commit code, với mỗi commit giải quyết một vấn đề nhỏ. Việc này giúp bạn dễ dàng theo dõi và rollback nếu có vấn đề xảy ra.
Thực hành, thực hành, rồi bạn sẽ thành "cao thủ Git" thôi!
Hy vọng lời khuyên của tôi hữu ích cho bạn. Chúc bạn thành công!