मैंने अभी गिट का उपयोग करना शुरू कर दिया है, और एसवीएन से वर्कफ़्लो मतभेदों से प्रभावित हूं, लेकिन मैंने एक संरचनात्मक/सेटअप प्रश्न में भाग लिया है कि दस्तावेज़ीकरण सहजता से समझने की प्रतीत नहीं होता है कि मैं कैसे स्थापित करना है, और मैं हूं सोच रहा है कि यह भी संभव है।दो मशीनों से विकास के लिए गिट रिपोजिटरी सेटअप?
मेरा सेटअप यह है कि मेरे पास कई कंप्यूटर हैं जो मैं (डेस्कटॉप और लैपटॉप) से विकास करता हूं, इसलिए, आसानी से सिंक में रहना और गिट रिपोजिटरी के लिए बैकअप प्रदान करना, मैंने अपने घर पर "सार्वजनिक" नंगे भंडार स्थापित किया लिनक्स सर्वर जो मैं डेस्कटॉप और लैपटॉप दोनों से एसएसएच कर सकता हूं। यह वास्तव में सार्वजनिक नहीं है, क्योंकि इसे प्राप्त करने के लिए बॉक्स में एसएसएच पहुंच की आवश्यकता होती है।
मेरे समस्या आता है जब मैं अपने डेस्कटॉप पर बदलाव करते हैं, मैं आसानी से सर्वर भंडार (मुझे लगता है कि भंडार पर origin
के लिए mirror
ध्वज सेट दूरस्थ है) में परिवर्तन धक्का कर सकते हैं और gitx
का उपयोग कर रहा देख सकते हैं कि स्थानीय और रिमोट स्टेटस समान दिखते हैं, और मेरे प्रत्येक व्यक्तिगत काम सर्वर पर लॉग इन कर दिया गया है।
सवाल यह है कि जब मैं अपने लैपटॉप पर स्विच करता हूं, जिसे मैं अक्सर उपयोग करता हूं, तो गिट रिपोजिटरी में सर्वर संस्करण के पीछे कई चीजें होती हैं और उन्हें अद्यतन करने की आवश्यकता होती है। मैंने उन परिवर्तनों को स्थानीय प्राप्त करने के लिए git pull
का उपयोग करना शुरू किया, लेकिन सर्वर पर सभी व्यक्तिगत डुप्लिकेट को स्थानीय रिपोजिटरी में डुप्लिकेट करने के बजाय, यह स्थानीय भंडार में एक नई 'विलय' प्रतिबद्धता जोड़ता है, और gitx
उस पर रिमोट रिपोजिटरी शाखा में विलय दिखाता है बिंदु।
क्या कोई कमांड/वर्कफ़्लो है जो मुझे स्थानीय भंडार को दूरस्थ भंडार की सटीक स्थिति में अपडेट करने देगा (जैसे कि यदि मैं git push --mirror
कोई डेटा खो जाऊंगा)? क्या मुझे प्रत्येक बार अपना स्थानीय भंडार हटाना होगा और हर बार git clone
इसे फिर से हटाना होगा?
वर्तमान में किसी और को इस भंडार तक पहुंच की आवश्यकता नहीं होगी, हालांकि भविष्य में यह लोगों के लिए सार्वजनिक भंडार बन सकता है, इसलिए उत्तर जो उस संभावना को नष्ट नहीं करते हैं, की सराहना की जाएगी।
संपादित करें: मेरी प्रतिबद्धताओं में मास्टर शाखा से छूट शाखाएं शामिल हैं; क्या यह विलय के रूप में दिखाने के लिए git pull
कमांड को ट्रिगर कर रहा है? क्या --rebase
फ्लैग है जो मुझे चाहिए?
समाधान स्पष्टीकरण: यह पता चला मैं अपने खजाने स्थापित करने के लिए निम्नलिखित किया था: एक Git भंडार सर्वर से
- उपयोग लैपटॉप (एक प्रतिबद्ध)
- एक परिवर्तन किया गया और लैपटॉप पर प्रतिबद्ध (लैपटॉप पर बी प्रतिबद्ध)
- डेस्कटॉप क्लोन सर्वर भंडार (प्रतिबद्ध एक)
- डेस्कटॉप पर परिवर्तन करें और प्रतिबद्ध (करता सी, डी, ई, रिबेसिंग शाखाएं शामिल हैं)
- डेस्कटॉप सर्वर से धक्का (सर्वर तेजी ई) को आगे
- जब लैपटॉप सर्वर से खींचती है, किसी मर्ज में परिणाम (बी के बाद से नहीं कर सकते हैं तेजी से आगे ई के लिए)।
- लैपटॉप विलय करता है, और सर्वर
- डेस्कटॉप में परिवर्तन को धक्का देता है, अब डेस्कटॉप को भी विलय करना पड़ता है।
उस अतिरिक्त प्रतिबद्धता के कारण जो एक अनजाने नई गलती थी, इसने मुझे यह सोचने का नेतृत्व किया कि यह हमेशा एक विलय होगा। Xentac के सुझाव पर, मैं वापस गया और लैपटॉप पर पाया कि मैंने एक विलय किया था जिसे सर्वर पर धक्का नहीं दिया गया था, जो अपराधी था, और एक बार जब मैं तीनों को वास्तव में सिंक में मिला, git pull --ff
(केवल फास्ट फॉरवर्ड विलय को मजबूर करना) बस ठीक काम करता है, और विलय करने से पहले कुछ सिंक से बाहर होने पर मुझे चेतावनी देता है।