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
Mình dùng nhiều tool rồi nhưng mà đúng là tool merge của JetBrains là số 1.
Hiện thì dùng của VsCode mặc định luôn. Case nào khoai quá mới mở JetBrains lên .
Ngoài ra thì thấy ông sếp đang dùng Tower trên MacOS có vẻ cũng ngon. Dùng để review + merge code luôn. Mà bản crack của nó version cũ quá nên t ko thích xài theo.
 
Em hỏi chút mấy bác. Giả sử em checkout từ master ra 1 nhánh tên là A, sau 1 thời gian thì master có thêm những đoạn code mới. Thì mong muốn của em là đứng ở nhánh A mà mình vẫn merge được những gì mới nhất của master thì làm sao ạ ?
Có phải là đứng từ nhánh A rồi gõ : git pull origin master phải không ?

Case trên thì k dùng pull mà dùng git merge origin master

Sent from Vsmart Active 3 using vozFApp
 
Em hỏi chút mấy bác. Giả sử em checkout từ master ra 1 nhánh tên là A, sau 1 thời gian thì master có thêm những đoạn code mới. Thì mong muốn của em là đứng ở nhánh A mà mình vẫn merge được những gì mới nhất của master thì làm sao ạ ?
Có phải là đứng từ nhánh A rồi gõ : git pull origin master phải không ?
Rebase master để giữ history. git rebase origin/master

via theNEXTvoz for iPhone
 
Mình dùng nhiều tool rồi nhưng mà đúng là tool merge của JetBrains là số 1.
Hiện thì dùng của VsCode mặc định luôn. Case nào khoai quá mới mở JetBrains lên .
Ngoài ra thì thấy ông sếp đang dùng Tower trên MacOS có vẻ cũng ngon. Dùng để review + merge code luôn. Mà bản crack của nó version cũ quá nên t ko thích xài theo.
Cty xài crack phèn vậy fen 😆
 
Em hỏi chút mấy bác. Giả sử em checkout từ master ra 1 nhánh tên là A, sau 1 thời gian thì master có thêm những đoạn code mới. Thì mong muốn của em là đứng ở nhánh A mà mình vẫn merge được những gì mới nhất của master thì làm sao ạ ?
Có phải là đứng từ nhánh A rồi gõ : git pull origin master phải không ?
sang master pull code về , rồi về lại A dùng git rebase master. Lỡ đang thay đổi đang làm gì bên nhánh A rồi thì dùng git stash để lưu tạm , rồi mới chuyển qua nhánh master
 
cho hỏi ngu cái, mình xài svn + cvs rồi, cty k xài branch làm gì
cho hỏi tại sao k chỉ lấy code về rồi đẩy lên mà đẻ ra rebase, cherry pick, squash để làm gì nhỉ?
 
cho hỏi ngu cái, mình xài svn + cvs rồi, cty k xài branch làm gì
cho hỏi tại sao k chỉ lấy code về rồi đẩy lên mà đẻ ra rebase, cherry pick, squash để làm gì nhỉ?
rebase, squash có thể ko cần xài cũng dc
nhưng cherry-pick thì sẽ cần:
vd: có 3 nhánh dev,demo(cho QC test),master(production). :haha:
theo luồng của 1 feature là dev > demo - cho QC test, nếu ok thì merge nhánh demo > master
trong khi đang dev features mới thì production có bug, bác phải hot-fix cái bugs đó và merge vào demo cho QC verify:p
nếu QC ok thì cần cái commit hot-fix đó cherry-pick vào master. (ko dc merge demo vào master vì demo đang có features mới):beat_shot:
 
rebase, squash có thể ko cần xài cũng dc
nhưng cherry-pick thì sẽ cần:
vd: có 3 nhánh dev,demo(cho QC test),master(production). :haha:
theo luồng của 1 feature là dev > demo - cho QC test, nếu ok thì merge nhánh demo > master
trong khi đang dev features mới thì production có bug, bác phải hot-fix cái bugs đó và merge vào demo cho QC verify:p
nếu QC ok thì cần cái commit hot-fix đó cherry-pick vào master. (ko dc merge demo vào master vì demo đang có features mới):beat_shot:
à, nếu như bên mình làm, sẽ là merge tay vào
 
rebase, squash có thể ko cần xài cũng dc
nhưng cherry-pick thì sẽ cần:
vd: có 3 nhánh dev,demo(cho QC test),master(production). :haha:
theo luồng của 1 feature là dev > demo - cho QC test, nếu ok thì merge nhánh demo > master
trong khi đang dev features mới thì production có bug, bác phải hot-fix cái bugs đó và merge vào demo cho QC verify:p
nếu QC ok thì cần cái commit hot-fix đó cherry-pick vào master. (ko dc merge demo vào master vì demo đang có features mới):beat_shot:
Th này nên branch out từ master ra branch hotfix, merge hotfix -> qc, test ok merge hotfix -> master.
Cherry pick kiểu câu lệnh cứu cánh vã lắm mới phải xài thôi.
 
cho hỏi ngu cái, mình xài svn + cvs rồi, cty k xài branch làm gì
cho hỏi tại sao k chỉ lấy code về rồi đẩy lên mà đẻ ra rebase, cherry pick, squash để làm gì nhỉ?

rebase có nhiều công dụng:
  • Edit một commit cũ
  • Chuyển gốc của một nhánh sang vị trí khác,
  • Làm thẳng lịch sử commit. Rất hay gặp khi một branch nhiều người cùng làm, nếu không rebase thì sẽ có đầy rẫy các merge commit, rất khó nhìn.

squash là để gộp commit với nhau, dành cho khi có người không biết commit, cứ "update/fix xxx" liên tục.

Còn lý do phải làm những cái trên là để dễ theo dõi kiểm soát lịch sử hơn. Sau này cần cũng có thể dùng được các tool như revert hay bisect, vốn rất cần lịch sử sạch.

VD
  • revert: tool này hoạt động tốt nhất khi các commit là rõ ràng, chỉ thực hiện đúng theo ý nghĩa của nó. Một lịch sử toàn update/fix xxx, hay kiểu một thay đổi thực hiện trên nhiều commit, hoặc một commit thực hiện trên nhiều thay đổi không liên quan thì revert rất khó hoặc không có tác dụng.
  • bisect: y/c cũng giống như revert, và còn cần tất cả các thời điểm trong lịch sử code ít nhất phải build thành công và chạy được. Với kiểu commit gây syntax error rồi sau đó đè thêm commit mới để fix thì rất khó bisect.
 
cho hỏi ngu cái, mình xài svn + cvs rồi, cty k xài branch làm gì
cho hỏi tại sao k chỉ lấy code về rồi đẩy lên mà đẻ ra rebase, cherry pick, squash để làm gì nhỉ?
Dùng branch có thể áp dụng cho nhiều tình huống cần duy trì các hướng phát triển độc lập. Dễ hình dung ra nhất là việc duy trì một nhánh để maintain bản cũ và một nhánh để phát triển bản mới.

Cherry pick, merge, rebase chỉ là các phương án đồng bộ giữa hai nhánh cho các trường hợp cụ thể thôi.

SVN cũng có cherry pick. Bạn mở hộp thoại merge ra sẽ thấy hai lựa chọn là merge a range of revisions và merge two different trees, cái đầu tiên chính là cherry pick. Dĩ nhiên mô hình nhánh của SVN khác git nên hơi khó giải thích.
 

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