Git एक और रिपॉजिटरी से एक शाखा खींच रहा है?


86

मेरे पास एक स्थानीय गिट रिपॉजिटरी है जो कि जीथब पर एक रिपॉजिटरी का क्लोन है। किसी ने रिपॉजिटरी को छोड़ दिया है और एक नई रिपॉजिटरी पर एक नई शाखा में बदलाव किए हैं। मैं इस नई शाखा को अपनी रिपॉजिटरी (स्थानीय रूप से मास्टर के साथ विलय से पहले काम करने के लिए) में स्थानांतरित करना चाहता हूं।

मैंने एक नई शाखा बनाने की कोशिश की और फिर कांटे के भंडार से खींच लिया लेकिन यह शिकायत करता है क्योंकि नई शाखा मास्टर शाखा की एक प्रति है और साथ ही स्थानीय फ़ाइल भी बदल जाती है, इसलिए यह कहता है

error: Your local changes to the following files would be overwritten by merge

तो मैं अपने स्थानीय भंडार पर एक नई शाखा में दूसरी रिपॉजिटरी में शाखा कैसे खींच सकता हूं?

मुझे उम्मीद है कि इसका कोई अर्थ है। यदि नहीं, तो यह मेरा भंडार है: https://github.com/MatthewLM/cbitcoin

जैसा कि आप देख सकते हैं, किसी ने शाखा "linuxBuild" के साथ एक नया भंडार बनाया है: https://github.com/austonst/cbitcoin/tree/linuxBuild

मैं मैथ्यूएलएम / cbitcoin के लिए अपने स्थानीय भंडार पर वह शाखा चाहता हूं।

मैं यह कैसे कर सकता हूँ?

जवाबों:


156

आपको यह सुनिश्चित करने की आवश्यकता है कि git statusआपके स्थानीय भंडार में कोई भी अस्थिर परिवर्तन मौजूद नहीं है।
आप पहले अपने स्थानीय परिवर्तनों को नष्ट करके और उस शाखा को खींचने से कर सकते हैं। बाद में आप अपने स्टैश को लगा सकते हैं।


यदि आप अपने स्थानीय भंडार में कांटे की शाखा संरचना को फिर से बनाना चाहते हैं, तो आप निम्न कार्य कर सकते हैं:

git remote add fork <url of fork>
git fetch fork
git checkout -b fork_branch fork/<branch>

यह स्थानीय शाखा fork_branchको उसी इतिहास के साथ बनाएगा जैसे <branch>कांटे में, यानी आपके fork_branchउस स्थान से शाखा निकलेगी masterजहां <branch>कांटा है। इसके अतिरिक्त, आपकी स्थानीय शाखा अब उस शाखा को कांटे में ट्रैक करेगी, जिससे आप कांटे में किए गए नए परिवर्तनों को आसानी से खींच सकते हैं।

मुझे लगता है कि आपको अभी भी यह सुनिश्चित करने की आवश्यकता है कि आपकी वर्किंग कॉपी में कोई बदलाव नहीं है।


ठीक है धन्यवाद। यह बहुत अच्छा होगा यदि मैं अपने स्थानीय परिवर्तन चाहता हूं और कांटे से शाखा में कमिट नहीं मिला है। लेकिन क्या होगा अगर मैं चाहता हूं कि नई शाखा बिल्कुल वैसा ही हो जैसा कि कांटा भंडार पर है? इस नई शाखा के लिए कांटा होने के बाद मेरी खुद की रिपॉजिटरी से किसी भी तरह के कमिट को हटाना शामिल है। इस तरह यह ऐसा होगा जैसे कि शाखा एक कांटे के बजाय मेरे स्वयं के भंडार पर बनाई गई थी।
मैथ्यू मिशेल

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

@MatthewMitchell: कृपया अपडेट देखें। क्या आप इसी की तलाश में हैं?
डैनियल हिल्गारथ

खैर, मैंने इसे दूसरी शाखा के साथ विलय करने की विधि का उपयोग किया (मैं इसे केवल मास्टर के साथ विलय कर दिया) अंत में, लेकिन इस मामले में जहां मुझे बस एक शाखा चाहिए जैसा कि यह एक अन्य भंडार से है, मैं लाने की कोशिश करूँगा और आपके द्वारा बताई गई चेकआउट विधि। धन्यवाद।
मैथ्यू मिशेल

एक अन्य रेपो से दूसरी शाखा "gh-pages" को स्थानांतरित करने के लिए उपयोग किया जाता है!
Marcello de Sales

38

रिमोट जोड़ने के बिना विधि।

git checkout --orphan fork_branch
git reset --hard
git pull <url of fork> <branch>

2
इसके लिए धन्यवाद, मैंने इसे बुकमार्क कर लिया है और इसे वापस लाता रहा हूं!
शेन स्मिसोल

2
2020 के लिए सर्वश्रेष्ठ उत्तर
डायमंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.