Chúng tôi sử dụng git và có một nhánh chính và các nhánh nhà phát triển. Tôi cần thêm một tính năng mới và sau đó khởi động lại các xác nhận thành chủ, sau đó đẩy chủ lên máy chủ CI.
Vấn đề là nếu tôi có xung đột trong khi rebase, tôi không thể đẩy sang nhánh nhà phát triển từ xa (trên Github) sau khi rebase hoàn thành, cho đến khi tôi kéo nhánh từ xa của mình. Điều này gây ra các cam kết trùng lặp. Khi không có xung đột, hoạt động như mong đợi.
câu hỏi: sau khi rebase và giải quyết xung đột, làm cách nào để đồng bộ hóa các nhánh nhà phát triển cục bộ và từ xa mà không tạo các cam kết trùng lặp
Thiết lập:
// master branch is the main branch
git checkout master
git checkout -b myNewFeature
// I will work on this at work and at home
git push origin myNewFeature
// work work work on myNewFeature
// master branch has been updated and will conflict with myNewFeature
git pull --rebase origin master
// we have conflicts
// solve conflict
git rebase --continue
//repeat until rebase is complete
git push origin myNewFeature
//ERROR
error: failed to push some refs to 'git@github.com:ariklevy/dropLocker.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
// do what git says and pull
git pull origin myNewFeature
git push origin myNewFeature
// Now I have duplicate commits on the remote branch myNewFeature
BIÊN TẬP
Vì vậy, có vẻ như điều này sẽ phá vỡ quy trình làm việc:
developer1 làm việc trên myNewFeature developer2 hoạt động trên cả NewFeature của cả hai đều sử dụng master làm nhánh chính
developer2 hợp nhất myNewFeature của mình vào NewFeature
developer1 khởi động lại, giải quyết xung đột, sau đó buộc đẩy đến chi nhánh từ xa cho myNewFeature
Vài ngày sau, developer2, hợp nhất myNewFeature của anh ấy lại với NewFeature
Điều này sẽ khiến các nhà phát triển khác ghét nhà phát triển1?
force
sự thúc đẩy)
rewriting history
, đó là mộtrebase
we
? bạn có ở trong một nhóm không chỉ là bạn không?they
nói (những người biết nhiều hơn tôi) rằng nếu bạn chia sẻ mã của mình thì bạn không nên sử dụngrebase
. Tại sao bạn không làmgit pull
vàgit merge
?