thắc mắc [Git] dùng gì để giải quyết conflict

  • Người tạo chủ đề Người tạo chủ đề tiengdonhoarira
  • Ngày bắt đầu Ngày bắt đầu
Nhiều người code chung thì conflict là bình thường. Nhưng có bác nào thấy trường hợp code 1 mình mà cũng conflict chưa :))

T tự làm tự hủy lun nè. Làm pet project, code trên pc và laptop. Có đợt code trên laptop quên pull về. Thế là conflict sml. :beat_brick::beat_brick:

Sent from Vsmart Active 3 using vozFApp
 
dùng rebase thì có giảm conflict k bác
Như nhau thôi bạn. Đôi khi rebase còn nhiều conflict hơn vì nó là "replay" lại từng commit một. Tuy nhiên team mình vẫn bắt buộc mọi người phải dùng rebase cho các feature branch để commit của cùng một feature sẽ liền mạch, nhìn history đẹp hơn, muốn bỏ feature nào ra cũng dễ.
 
Mình có case như này:
  • Feature 1: code xong -> merge vào develop -> chờ QC test
  • Feature 2: chạy sau, tách branch từ develop (có code của feature 1) -> code xong -> merge vào develop -> QC test done
Khách hàng cần release feature 2 trước thì bác làm thế nào ?
Cái này thực tế không liên quan đến git lắm. Git chỉ là source version control thôi. Release code thì là release source chứ không phải nhất thiết là release cho khách hàng.

Có thể dùng configuration để enable features. Nghĩa là code vẫn trong develop, được compile nhưng trong runtime thì được config để không đụng đến.
https://configcat.com/
 
Nhiều người code chung thì conflict là bình thường. Nhưng có bác nào thấy trường hợp code 1 mình mà cũng conflict chưa :))

T tự làm tự hủy lun nè. Làm pet project, code trên pc và laptop. Có đợt code trên laptop quên pull về. Thế là conflict sml. :beat_brick::beat_brick:

Sent from Vsmart Active 3 using vozFApp
cũng thế. có 2 laptop, 1 để công ty một ở nhà, để đi làm ko phải mang gì. về nhà có lúc quên pull, khi push thì bị conflict, giải quyết cũng dễ
 
Mình có case như này:
  • Feature 1: code xong -> merge vào develop -> chờ QC test
  • Feature 2: chạy sau, tách branch từ develop (có code của feature 1) -> code xong -> merge vào develop -> QC test done
Khách hàng cần release feature 2 trước thì bác làm thế nào ?
Như bên mình mỗi feature sẽ tạo thành 1 branch riêng nên release feature nào trước thì merge cái đó vào master để release.

Kinh nghiệm của mình không phải chỉ với git mà kể cả các tool khác dùng chung trong team là những chức năng nào lạ/advanced/ít khi dùng, kiểu như cherry pick ... thì khi nên hạn chế sử dụng trong workflow của team, trừ khi gặp trường hợp rất đặc biệt. Có thể mình thạo làm thì thấy rất dễ và nhanh hơn, nhưng vào tay người khác không quen mà phải làm là rất dễ toang. Lúc đấy thời gian tiết kiệm được chẳng bõ với thời gian đi xử lý sự cố.
 
Sửa lần cuối:
Các bác cho e hỏi tại sao phải cố để git history readable nhỉ ?

Mình làm mấy dự án git history trông như bãi rác, có nghĩa là đầy commit chả có title décription gì mà dự án vẫn chạy ngon nên mình chưa hiểu tác dụng lắm
 
Mình dùng sourcetree.
Pull lúc nào cũng set option rebase mặc định.
Resolve conflict thông qua Kdiff3 set mặc định trong sourcetree luôn.
 
Các bác cho e hỏi tại sao phải cố để git history readable nhỉ ?

Mình làm mấy dự án git history trông như bãi rác, có nghĩa là đầy commit chả có title décription gì mà dự án vẫn chạy ngon nên mình chưa hiểu tác dụng lắm
quan trọng ở khâu maintainance sau này nữa, nhất là nếu nhiều branch sau này sửa rất là cực nếu lỗi. Ngoài ra còn 1 mớ thứ như Conventional commits, cách đặt tên commit, v.v.

Nhiều dự án mình làm cực đoan tới nỗi bắt linear history luôn, muốn merge gì phải tự rebase tự test, khi nào ổn hết mới được merge.
 
Các bác cho e hỏi tại sao phải cố để git history readable nhỉ ?

Mình làm mấy dự án git history trông như bãi rác, có nghĩa là đầy commit chả có title décription gì mà dự án vẫn chạy ngon nên mình chưa hiểu tác dụng lắm
Có nhiều dự án nó release = cherry pick thì cái này mới có tác dụng. Còn ko thì đúng là mất thời gian ae dev.
Nói chung mấy cái best practices này nọ lúc nào cũng có 2 mặt thôi ko phải lúc nào cũng tốt hoàn toàn.
 
Các bác cho e hỏi tại sao phải cố để git history readable nhỉ ?

Mình làm mấy dự án git history trông như bãi rác, có nghĩa là đầy commit chả có title décription gì mà dự án vẫn chạy ngon nên mình chưa hiểu tác dụng lắm
Để history readable thì ko chỉ riêng Git mà dùng thằng nào cũng nên vậy. History rõ ràng, gọn gàng thì dễ pick feature từ nhánh này qua nhánh khác hơn trong trg hợp có nhiều nhánh cho các release khác nhau. Quan trọng nhất là khi có issue thì sẽ nhanh trace ra commit nào gây ra issue hơn, nhiều khi chỉ cần đọc commit message là khoanh vùng đc rồi chưa cần nhìn vào code change trong commit
 
Để history readable thì ko chỉ riêng Git mà dùng thằng nào cũng nên vậy. History rõ ràng, gọn gàng thì dễ pick feature từ nhánh này qua nhánh khác hơn trong trg hợp có nhiều nhánh cho các release khác nhau. Quan trọng nhất là khi có issue thì sẽ nhanh trace ra commit nào gây ra issue hơn, nhiều khi chỉ cần đọc commit message là khoanh vùng đc rồi chưa cần nhìn vào code change trong commit
Có thể dự án mình bé nên lịch sử git như cc dự án vẫn chạy tốt
 
Có cách nào hạn chế việc thành viên trong team dùng git push force ko các thím

Team mình đ solve conflict mà các bố cứ đẩy lên để mình phải ngồi solve hộ
 

Thống kê chủ đề

Ngày tạo
tiengdonhoarira,
Người trả lời cuối
chim sẻ đi nắng,
Trả lời
185
Lượt xem
19.944
Quay lại
Lên đầu trang