git विभिन्न रिपोजिटरी को मर्ज करता है?


79

मैं अपने सभी प्रोजेक्ट्स के लिए एसवीएन का उपयोग कर रहा हूं। कभी-कभी प्रोजेक्ट B प्रोजेक्ट A से प्रतिलिपि के रूप में उत्पन्न होता है। जब प्रोजेक्ट A में एक सामान्य परिवर्तन होता है, तो मैं svn merge Aनिर्देशिका B के भीतर उपयोग कर सकता हूं और यह उन परिवर्तनों को मर्ज कर देगा।

अब, अगर मैं git का उपयोग करना चाहता था। मुझे अपनी सभी परियोजनाओं को एक ही रिपॉजिटरी में रखना पसंद नहीं है क्योंकि मुझे तब सब कुछ क्लोन करना पड़ता है और एसवीएन की तरह सिर्फ एक प्रोजेक्ट नहीं चुन सकता है। लेकिन प्रत्येक परियोजना के लिए एक रिपॉजिटरी होने के नाते, मैं एसवीएन के साथ पहले की तरह ही कैसे करूं?

सवाल यह है कि अगर मुझे कई सबप्रोजेक्ट चाहिए जो वास्तव में सभी एक मूल परियोजना से संबंधित हैं और उन्हें सिंक में रखना चाहते हैं, तो इसका सबसे अच्छा तरीका क्या है? और यह कि मैं उन्हें अलग से जांचने में सक्षम होना चाहता हूं


1
आप शायद बेहतर git-submodule ( kernel.org/pub/software/scm/git/docs/git-submodule.html ) पर एक नज़र डालेंगे ।
कास्केले

@ जेफ्रोमी लेकिन स्रोत फाइलें मूल रूप से एक ही इतिहास से हैं, इसका मतलब होगा कि मेरे पास फ़ाइलों की दो प्रतियां हैं? मुझे लगता है कि सबमॉड्यूल बाहरी पुस्तकालयों पर नज़र रखने के लिए अधिक है जिन्हें आप अलग-अलग फ़ाइलों (मर्ज नहीं) के रूप में शामिल करते हैं?
बालू

कोई बात नहीं, मैंने यह नहीं देखा कि आपने कहा था कि B, A की एक प्रति है "पढ़ना आपका" प्रश्न है ", जहाँ आपने कहा था" सबप्रोजेक्ट ... एक मूल प्रोजेक्ट से संबंधित ... सिंक में "मैंने माना कि आप ले रहे थे उस मूल परियोजना का हिस्सा है, लेकिन उन्हें रूपक में सिंक में रखते हुए।
कैस्केबेल

जवाबों:


140

आप दो परियोजनाओं है, तो proj1और proj2और के परिवर्तन मर्ज करना चाहते हैं proj1में proj2, आप इसे इस तरह से करना होगा:

# in proj2:
git remote add proj1 path/to/proj1
git fetch proj1
git merge proj1/master # or whichever branch you want to merge

मेरा मानना ​​है कि यह वही है जो आप एसवीएन के साथ कर रहे थे।


लेकिन # 2 ट्रैक को मर्ज कर देगा कि हमने पहले ही मर्ज किए गए बदलाव # 1 को इस तरह से किया है? यदि मुझे सही याद है तो हर बार एक नए बदलाव को जोड़ने के लिए मुझे सभी परिवर्तनों (और सही संघर्षों) को फिर से मर्ज करना पड़ा। यह SVN-way नहीं हुआ
बालू

बेशक, मर्ज हमेशा की तरह काम करता है। आपको "सभी परिवर्तनों को पुन: उत्पन्न नहीं करना है"। यह सामान्य मर्ज से अधिक कुछ नहीं है, जिसे आप एक दूर के सर्वर के साथ उपयोग करेंगे।
ओलिवियर वर्डियर

अगर मेरे पास रिमोट नहीं है तो क्या होगा? मैं ऐसा ही करना चाहूंगा (प्रोज में मर्ज करना), लेकिन मैं बिना रीमो के ही स्थानीय स्तर पर काम कर रहा हूं।
एल। होलांडा

1
@LeoHolanda स्थानीय फ़ाइलों के रूप में दूरदराज के रूप में गिनती के रूप में चिंतित है।
17

3
@LeoHolanda आपके पास यहाँ बिंदु है। मुझे URL प्रारूप में स्थानीय रेपो को प्रदर्शित करना था, जैसे फ़ाइल: ///Users/abc/path/to/my/repo/.git
mcku
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.