Git kullanıyoruz ve bir master şubemiz ve geliştirici şubelerimiz var. Yeni bir özellik eklemem ve ardından taahhütleri ana olarak yeniden düzenlemem, ardından ana bilgisayarı CI sunucusuna göndermem gerekiyor.
Sorun şu ki, yeniden yükleme sırasında çakışmalarım olursa, yeniden temelleme tamamlandıktan sonra uzaktaki şubemi çekene kadar uzak geliştirici dalıma (Github'da) aktaramıyorum. Bu, yinelenen kayıtlara neden olur. Çatışma olmadığında beklendiği gibi çalışır.
soru: yeniden bağlama ve çakışma çözümlemesinden sonra, yerel ve uzak geliştirici dallarımı yinelenen kaydetmeler oluşturmadan nasıl eşitleyebilirim
Kurmak:
// 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
DÜZENLE
Bu yüzden iş akışını bozacak gibi görünüyor:
geliştirici1 myNewFeature geliştirici üzerinde çalışıyor2 hisNewFeature üzerinde çalışıyor, her ikisi de ana dal olarak ana dalı kullanıyor
geliştirici2 myNewFeature'ü Yeni Özelliği ile birleştirir
geliştirici1 yeniden adlar, çakışmaları çözer, ardından myNewFeature için uzak şubeye zorlar
birkaç gün sonra, geliştirici2, myNewFeature'ü tekrar NewFeature ile birleştirir
Bu, diğer geliştiricilerin geliştirici1'den nefret etmesine neden olacak mı?
force
itme)
rewriting history
, bu birrebase
we
? senden daha fazlası olan bir takımda mısın?they
(benden daha fazlasını bilenler) eğer kodunuzu paylaşırsanız kullanmamanız gerektiğini söyleyinrebase
. Neden yapmıyorsungit pull
vegit merge
?