Đối với anh em dev chúng ta thì Github là một thứ gì đó quá là quen thuộc rồi, đây là một dịch vụ cho phép anh em chúng ta lưu trữ, theo dõi và quản lý code của mình trên Internet. Thường thì mới chúng ta sẽ có 2 cách để push code lên Github đó là
- Dùng lệnh thông qua Terminal hoặc là Git Bash
- Công nghệ hơn anh em sẽ dùng tool Github Desktop.
Đối với những project nhỏ anh em code 1 mình 1 repo thì việc code rồi push lên nó quá là dễ dàng, chẳng có conflict gì cả nhưng khi anh em sử dụng trong phạm vi group có ít nhất từ 2 dev trở lên thì nó sẽ bắt đầu phát sinh là rất nhiều vấn đề khiến anh em phải đau đầu, sau đây tôi sẽ liệt kê 1 vài lỗi và cách giải quyết nó được đúc kết từ những kinh nghiệm xài git của chính tôi mà ra
(... xương máu, ôm đầu khóc lóc 1 thời mò cách fix conflict ấy …)
CONFLICT 1: MEMBER KHÔNG PUSH CODE ĐƯỢCNếu anh em từng là 1 member trong 1 group project được leader tạo bằng organization để lưu trữ nhiều repo thì ngay trong lần đầu push code anh em sẽ gặp 1 error message nói rằng anh em push code Failed hoặc là không có quyền thì conflict này, conflict này là do leader trong team anh em chưa mở quyền Write cho member ấy. Lúc này anh em liên hệ leader nhờ họ vào trong tab Member ở organization project đó để cấp quyền Write cho anh em lại là sẽ push bình thường nha.
CONFLICT 2: DÙNG GITIGNORE RỒI NHƯNG GIT VẪN TỒN TẠI CACHE
Chắc ai trong chúng ta cũng đã từng sử dụng gitignore push lên trước rồi, nhưng khi pull code từ branch khác về máy thì lại xuất hiện cache rác lên tới 500 600 file. Này không phải là gitignore không hoạt động đâu mà là vì file đó đã được thằng git cache nó thu nạp thành của nó rồi nên nó vẫn có quyền quản lý file đó, điều này cũng như là có sự thay đổi mới trong git nên nó yêu cầu anh em lại merge về. Để giải quyết vấn đề này thì đơn giản anh em chỉ cần ‘đá’ file đó ra khỏi tgitcache là xong, chỉ với 1 dòng lệnh
Từ bây giờ file đó không còn của gitcache nữa nên lúc này gitignore mới có tác dụng, anh em pull bất cứ branch nào về nữa nó cũng sẽ không còn rác.
- git rm -r --cached /path/to/file_or_folder
Từ bây giờ file đó không còn của gitcache nữa nên lúc này gitignore mới có tác dụng, anh em pull bất cứ branch nào về nữa nó cũng sẽ không còn rác.
CONFLICT 3: MEMBER PUSH GIT LUNG TUNG HƯ CẢ BRANCH MAIN
diều này chắc ai là leader của team thì cũng phải gặp 1 lần rồi, code cả đêm qua mới xong vừa push lên đi ngủ thế mà sáng mở mắt thấy thằng member nào đó push code của nó vào branch main rồi làm conflict cả branch main, hậu quả hư mất cả project. Điều này thật kinh khủng, nhưng anh em cũng không thể chặn không cho member push code lên được vì không push zo branch main thì push vào đâu giờ.
Giải pháp cho conflict này là anh em hãy sử dụng 1 bên thứ ba, đó là tạo ra 1 branch thứ 3 trung gian tên Develop, branch này sẽ thừa kế từ main và member lúc này chỉ cần push vào develop thôi, leader sẽ check lại rồi merge develop sang main. Nếu có sai sót làm hư cả branch thì lúc này anh em chỉ cần tạo 1 develop khác rồi merge từ main về lại, nó sẽ giúp anh em bảo vệ tốt code của group project.
Tags
github