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ấy bác ơi. Em hỏi tiếp chút là : Tại sao khi em đứng ở nhánh master em git pull mới nhất về và sau đó checkout từ master ra nhánh A. Rồi em đứng ở nhánh A thử gõ git merge origin master thì thấy có 1 mớ sự thay đổi được +++++ vô luôn.
Ko biết là tại sao ạ.
 
Mấy bác ơi. Em hỏi tiếp chút là : Tại sao khi em đứng ở nhánh master em git pull mới nhất về và sau đó checkout từ master ra nhánh A. Rồi em đứng ở nhánh A thử gõ git merge origin master thì thấy có 1 mớ sự thay đổi được +++++ vô luôn.
Ko biết là tại sao ạ.

Làm gì có chuyện đó được. :rolleyes:
 
Mấy bác ơi. Em hỏi tiếp chút là : Tại sao khi em đứng ở nhánh master em git pull mới nhất về và sau đó checkout từ master ra nhánh A. Rồi em đứng ở nhánh A thử gõ git merge origin master thì thấy có 1 mớ sự thay đổi được +++++ vô luôn.
Ko biết là tại sao ạ.
Git checkout là đổi branch
Git checkout -b mới là branch out
 
dự án team mình dùng angular gần như mấy lần resolve conflict đa phần import module từ bootstraper chứ ít khi đụng code nhau. có resolve chắc toàn dùng vscode cho nhanh =))
 
trước cũng toàn merge chay bằng intelij mà h em học được cách là cứ push lên nhánh của mình rồi vào git kiểm tra phần pull request, có conflict thì chỉnh trên git, còn ko thì nó sẽ báo xanh cho mình merge vào nhánh chính luôn :beauty:.Em code java nên thấy inteij khá ngon, còn fe thì dùng vscode.À nhớ trước khi code cái gì thì phải pull về trước đã nhé :big_smile:
 
dev java dùng intellij hỗ trợ git từ a tới á, resolve conflict dễ dàng. Công nhận dùng hàng của jetbrain sướng thật :sleep:
ngoài nhắc code đỉnh, giao diện hiện đại + xử lý conflict thì còn vụ sql nữa, em dùng mysql thấy intelij nó hỗ trợ xịn xò hơn cái mySql workbench nhiều :adore:
 
lúc trước mình có lỡ --force push mấy lần rồi ae, giờ nó mắc giữa fetch-first và non-fast-forwad cứ fix cái này lát lại lòi ra cái kia :cry:, giờ mình muốn fix thì sao ae, vì 1 số cái trên Stack ko fix dc, biện pháp cuối là xây từ đầu bỏ hết commit mình chủ yếu là lấy branch để merge qua master cho lead thôi , help me:big_smile:
 
Ý mình về việc cha đẻ của cái wf huyền thoại cũng edit bài của ông ấy vào năm ngoái.
https://nvie.com/posts/a-successful-git-branching-model/

Đợt đầu năm mình có vật nhau với một PO của sản phẩm khác về việc ốp wf phù hợp cho project hay xa hơn là git wf là một phần của văn hoá làm việc trong team/ project to hơn là cty :sexy_girl:

via theNEXTvoz for iPhone
 
Ý mình về việc cha đẻ của cái wf huyền thoại cũng edit bài của ông ấy vào năm ngoái.
https://nvie.com/posts/a-successful-git-branching-model/

Đợt đầu năm mình có vật nhau với một PO của sản phẩm khác về việc ốp wf phù hợp cho project hay xa hơn là git wf là một phần của văn hoá làm việc trong team/ project to hơn là cty :sexy_girl:

via theNEXTvoz for iPhone
chứ work flow của git có tiêu chuẩn gì ko bác. Hay bác nói ra những gì bác muốn nói đi. Em đọc vô có chỗ nào mà cá nhân em thấy ko hợp lý thì mình tranh luận cho vui
 
Chia sẻ workflow hiện tại.Đang follow dựa theo Gitlab Flow, nhưng đặt tên branch khác đi.

  • develop: single source of truth, tất cả các tính năng đều phải checkout -b từ đây.
  • release/sprint_xx: branch được tạo cho QC test, chuẩn bị lên production. Nếu QC đánh PASS, thì sẽ tạo tag v.xx để deploy production.

* Khi có tính năng mới
Ruby:
# 1. Lấy code mới nhất về
> git checkout develop && git pull origin develop

# 2. Checkout nhánh mới -> code -> commit
> git checkout -b feat/add_something
# ...code...
> git add . && git commit -m 'add something'

# 3. Tạo merge request
# Lấy code mới nhất và rebase.
> git fetch origin
> git rebase origin/develop
> git push origin feat/add_something

# Lên gitlab tạo MR từ feat/add_something --> develop

* Khi QC cần test
Ruby:
> git checkout develop && git pull origin develop
> git checkout -b release/sprint_xx
# CI/CD deploy

* Production
- Đánh tag từ branch release/sprint_xx. -> CI/CD deploy

* Hotfix
Ruby:
> git checkout --track release/sprint_xx
> git checkout -b hotfix/sprint_xx
# fix & commit code && push
# Tạo MR vào release/sprint_xx
# QC verify PASS --> đánh tag v.xx.y. Đồng thời chery-pick về develop
# CI/CD deploy
 
Chia sẻ workflow hiện tại.Đang follow dựa theo Gitlab Flow, nhưng đặt tên branch khác đi.

  • develop: single source of truth, tất cả các tính năng đều phải checkout -b từ đây.
  • release/sprint_xx: branch được tạo cho QC test, chuẩn bị lên production. Nếu QC đánh PASS, thì sẽ tạo tag v.xx để deploy production.

* Khi có tính năng mới
Ruby:
# 1. Lấy code mới nhất về
> git checkout develop && git pull origin develop

# 2. Checkout nhánh mới -> code -> commit
> git checkout -b feat/add_something
# ...code...
> git add . && git commit -m 'add something'

# 3. Tạo merge request
# Lấy code mới nhất và rebase.
> git fetch origin
> git rebase origin/develop
> git push origin feat/add_something

# Lên gitlab tạo MR từ feat/add_something --> develop

* Khi QC cần test
Ruby:
> git checkout develop && git pull origin develop
> git checkout -b release/sprint_xx
# CI/CD deploy

* Production
- Đánh tag từ branch release/sprint_xx. -> CI/CD deploy

* Hotfix
Ruby:
> git checkout --track release/sprint_xx
> git checkout -b hotfix/sprint_xx
# fix & commit code && push
# Tạo MR vào release/sprint_xx
# QC verify PASS --> đánh tag v.xx.y. Đồng thời chery-pick về develop
# CI/CD deploy
cái vụ đánh tag này có gì hay ko bác? hay chỉ là highlight cái commit đó thôi ạ?
 
chứ work flow của git có tiêu chuẩn gì ko bác. Hay bác nói ra những gì bác muốn nói đi. Em đọc vô có chỗ nào mà cá nhân em thấy ko hợp lý thì mình tranh luận cho vui
cũng đang hóng hớt vụ này, chờ cao nhân nào vào vẽ cho vài đường có cái gọi là cơ sở để hỉu hơn về git

Để tối nay hoặc mai kia mình rảnh sẽ ngồi type 1 bài về git vậy. Chắc viết dạng bottom-up: đi từ góc độ của dev lên góc độ project management cho anh em dev dễ hình dung :bad_smelly: :embarrassed:
 
Chia sẻ workflow hiện tại.Đang follow dựa theo Gitlab Flow, nhưng đặt tên branch khác đi.

  • develop: single source of truth, tất cả các tính năng đều phải checkout -b từ đây.
  • release/sprint_xx: branch được tạo cho QC test, chuẩn bị lên production. Nếu QC đánh PASS, thì sẽ tạo tag v.xx để deploy production.

* Khi có tính năng mới
Ruby:
# 1. Lấy code mới nhất về
> git checkout develop && git pull origin develop

# 2. Checkout nhánh mới -> code -> commit
> git checkout -b feat/add_something
# ...code...
> git add . && git commit -m 'add something'

# 3. Tạo merge request
# Lấy code mới nhất và rebase.
> git fetch origin
> git rebase origin/develop
> git push origin feat/add_something

# Lên gitlab tạo MR từ feat/add_something --> develop

* Khi QC cần test
Ruby:
> git checkout develop && git pull origin develop
> git checkout -b release/sprint_xx
# CI/CD deploy

* Production
- Đánh tag từ branch release/sprint_xx. -> CI/CD deploy

* Hotfix
Ruby:
> git checkout --track release/sprint_xx
> git checkout -b hotfix/sprint_xx
# fix & commit code && push
# Tạo MR vào release/sprint_xx
# QC verify PASS --> đánh tag v.xx.y. Đồng thời chery-pick về develop
# CI/CD deploy
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 ?
 
Thấy ông cùng team dùng git-fork cũng bắt chước theo, mà cái nào ngắn ngắn thì dùng code editor luôn :3
 
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 :))
 

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.946
Quay lại
Lên đầu trang