हम गिट का उपयोग करते हैं और एक मास्टर शाखा और डेवलपर शाखाएं हैं। मुझे एक नई सुविधा जोड़ने की आवश्यकता है और फिर कमिट को मास्टर करने के लिए रिबेट करें, फिर मास्टर को CI सर्वर पर धकेलें।
समस्या यह है कि अगर मेरे पास रिबास के दौरान संघर्ष होता है, तो मैं रिबास पूरा होने के बाद अपनी दूरस्थ डेवलपर शाखा (जीथब पर) को धक्का नहीं दे सकता, जब तक कि मैं अपनी दूरस्थ शाखा नहीं खींचता। इससे डुप्लिकेट कमिट होता है। जब कोई टकराव नहीं होता है, तो उम्मीद के मुताबिक काम करता है।
प्रश्न: रिबेस और संघर्ष रिज़ॉल्यूशन के बाद, मैं डुप्लिकेट कमिट्स बनाए बिना अपनी स्थानीय और दूरस्थ डेवलपर शाखाओं को कैसे सिंक करूं
सेट अप:
// 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
संपादित करें
तो ऐसा लगता है कि यह वर्कफ़्लो को तोड़ देगा:
developer1 myNewFeature पर काम कर रहा है developer2 अपने निवेचर पर काम कर रहा है, दोनों मुख्य शाखा के रूप में मास्टर का उपयोग करते हैं
डेवलपर 2 ने myNewFeature को अपनेNewFeature में विलय कर दिया है
डेवलपर 1 विद्रोह, संघर्षों को हल करता है, फिर myNewFeature के लिए दूरस्थ शाखा को बल देता है
कुछ दिनों बाद, डेवलपर 2, myNewFeature को फिर से अपनेNewFeature में मिला लेता है
क्या इससे अन्य डेवलपर डेवलपर 1 से नफरत करेंगे?
force
धक्का)
rewriting history
, कि एकrebase
we
? क्या आप सिर्फ आप से ज्यादा की टीम में हैं?they
कहते हैं (जो लोग मुझसे अधिक जानते हैं) कि यदि आप अपना कोड साझा करते हैं तो आप का उपयोग नहीं करना चाहिएrebase
। आप क्यों नहीं बस कर नहीं कर रहे हैंgit pull
औरgit merge
?