मेरे गितुब भंडार से फाइलें खींचने की कोशिश: "असंबंधित इतिहास को मर्ज करने से इनकार"


151

मैं git सीख रहा हूं, और मैं Git समुदाय पुस्तक का अनुसरण कर रहा हूं।

पहले (बहुत समय पहले) मैंने कुछ फाइलों के साथ जीथब पर एक सार्वजनिक भंडार बनाया था। अब मैंने अपने वर्तमान कंप्यूटर पर एक स्थानीय Git रिपॉजिटरी की स्थापना की, और कुछ फाइलें बनाईं। फिर मैंने अपने Github पृष्ठ की ओर एक दूरस्थ संकेत जोड़ा:

[root@osboxes c]# git remote add learnc https://github.com/michaelklachko/Learning-C

यह सफल प्रतीत हो रहा था:

[root@osboxes c]# git remote show learnc
* remote learnc
  Fetch URL: https://github.com/michaelklachko/Learning-C
  Push  URL: https://github.com/michaelklachko/Learning-C
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (local out of date)

अब मैं अपने गिथुब रेपो से फाइलें अपने कंप्यूटर में डाउनलोड करना चाहता हूं। इसे मैने किया है:

[root@osboxes c]# git fetch learnc
[root@osboxes c]# git merge learnc/master
warning: refname 'learnc/master' is ambiguous.
Already up-to-date.

हालाँकि, मैं अपनी स्थानीय निर्देशिका में कोई नई फ़ाइल नहीं देखता। मैं उन्हें कैसे प्राप्त कर सकता हूं?

मैंने भी ऐसा करने की कोशिश की:

[root@osboxes c]# git pull learnc master
From https://github.com/michaelklachko/Learning-C
 * branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories

BTW, स्थानीय रूप से मैं मास्टर शाखा पर हूँ (कोई अन्य शाखाएँ नहीं हैं):

[root@osboxes c]# git status
On branch master
nothing to commit, working directory clean

4
जब आप अपना स्थानीय रेपो सेट करते हैं, तो क्या आपने अपना गितुब रेपो क्लोन किया था या बस किया था git init? उत्तरार्द्ध मामले में वे रिपॉजिट असंबंधित हैं (जिनमें कोई कॉमन कमिट नहीं है) और आप उन्हें मर्ज नहीं कर सकते हैं (पुल फ़्रीच + मर्ज़ है)।
पॉल

मैंने init किया। तो क्या मुझे इसे ठीक करने के लिए अपने गितुब रेपो को क्लोन करना चाहिए?
माइकलएसबी

1
आप अपने Github रेपो को क्लोन कर सकते हैं और इसके साथ काम जारी रख सकते हैं, लेकिन यह अभी भी अलग रेपो होगा। क्या आप दो असंबंधित इतिहासों को एक साथ मिलाना चाहते हैं?
पॉल

मुझे लगता है कि मैं इतिहास को मर्ज करना चाहता हूं, लेकिन वास्तव में मैं सिर्फ स्थानीय और गीथूब दोनों पर फ़ाइलों को संयोजित करना चाहता हूं। मेरा मतलब है कि मुझे वास्तव में पुरानी फाइलों के इतिहास के बारे में परवाह नहीं है जो मेरे पास गीथूब पर है।
माइकलएसबी

जवाबों:


315

प्रयत्न --allow-unrelated-histories

अधिकतम 630 टिप्पणी की गई है, या जैसा कि यहां बताया गया है जीआईटी ने असंबद्ध इतिहास को मर्ज करने से इनकार कर दिया


1
के रूप में github जारी नोटों
systemaddict

इसे सेट करने के लिए कोई कॉन्फ़िगर विकल्प क्यों नहीं है? हर बार मुझे इस विकल्प का शिकार करना होगा; मैं 2k8 से गिट के साथ काम करता हूं और इस बच्चे के बैठने से पूरी तरह से नाराज हूं। मूर्ख विकल्प हमेशा नहीं था। कम से कम इनकार संदेश का उपयोग करने के लिए ओवरराइड को शामिल करना चाहिए।
नवयुवती

98
git checkout master
git merge origin/master --allow-unrelated-histories

संघर्ष को हल करें, तब

git add -A .
git commit -m "Upload"
git push

1
उपरोक्त समाधान को विस्तृत करने के लिए धन्यवाद।
राहुल राज

39

जब मैं लोगों के काम के मुद्दों को अनब्लॉक करने के लिए हूं, तो मुझे नहीं लगता कि "पुश -फोर्स" या "--allow_unrelated_histories" को नए उपयोगकर्ताओं को सामान्य समाधानों के रूप में पढ़ाया जाना चाहिए, क्योंकि जब वे उनका उपयोग करते हैं तो वे एक भंडार के लिए वास्तविक कहर पैदा कर सकते हैं बिना यह समझे कि चीजें पहली जगह पर काम क्यों नहीं कर रही हैं।

जब आपके पास ऐसी स्थिति होती है, जहां आपने एक स्थानीय भंडार के साथ शुरुआत की थी, और अपने काम को साझा करने के लिए GitHub पर एक रिमोट बनाना चाहते हैं, तो इसके लिए कुछ देखना है।

जब आप नया ऑनलाइन रिपॉजिटरी बनाते हैं, तो एक विकल्प होता है "आरईएडीएमई के साथ इस रिपॉजिटरी को आरम्भ करें"। यदि आप ठीक प्रिंट पढ़ते हैं, तो यह कहता है "यदि आप एक मौजूदा भंडार का आयात कर रहे हैं तो इस चरण को छोड़ दें।"

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

संदर्भ: git + हब के साथ मेरा पहला अनुभव इस समस्या में भाग लेना और यह समझने के लिए बहुत कुछ करना था कि क्या हुआ था और क्यों।


12

यदि एक छोर पर पर्याप्त इतिहास नहीं है (उर्फ अगर यह गीथब एंड पर केवल एक रीडमी कमिट है), तो मुझे अक्सर अपने स्थानीय रेपो को रीडमी को मैन्युअल रूप से कॉपी करना आसान लगता है और git push -fअपने संस्करण को नया रूट कमिट करने के लिए ।

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


11

अपनी शाखा पर - मास्टर कहें, असंबंधित इतिहास को खींचें और अनुमति दें

git pull origin master --allow-unrelated-histories

मेरे लिए काम किया।


1
यह कमांड वह है जिसकी आपको Github में मूल रेपो बनाते समय एक लाइसेंस या रीडमी जोड़ने के लिए सहमत होने की आवश्यकता है।
F1Linux

4

निम्न आदेश निष्पादित करें:

git pull origin master --allow-unrelated-histories

एक मर्ज विम खुल जाएगा। कुछ विलय संदेश जोड़ें और:

  1. ESC दबाएँ
  2. Shift + 'दबाएं?'
  3. 'W' दबाएँ और फिर 'q' दबाएँ।

और आप जाने के लिए अच्छे हैं।


3

जब मैंने उपयोग किया --allow-unrelated-histories, तो इस कमांड ने बहुत सारे संघर्ष उत्पन्न किए। फाइलों में टकराव थे, जिन पर मैंने काम भी नहीं किया। त्रुटि को प्राप्त करने के लिए " Refusing to merge unrelated histories", मैंने रीबेस कमांड का उपयोग किया:

git pull --rebase=preserve --allow-unrelated-histories

इसके बाद कमिटेड मैसेज के साथ अनक्मिटेड बदलाव। अंत में, निम्न कमांड चलाएँ:

git rebase --continue

इसके बाद, मेरी कार्य प्रतिलिपि दूरस्थ प्रतिलिपि के साथ अप-टू-डेट थी और मैं पहले की तरह अपने परिवर्तनों को आगे बढ़ाने में सक्षम था। खींचने के दौरान कोई और असंबंधित इतिहास त्रुटि नहीं है।


1
वास्तविक संस्करण: के git pull --rebase=merge --allow-unrelated-historiesरूप --rebase=preserveमें पदावनत git-scm.com/docs/git-pull#Documentation/…
लकीर्लोके

0

मेरे मामले में एक ही मुद्दे का सामना करना पड़ रहा था, विशेष रूप से पहला पुल अनुरोध दूर से एक गिट रिपॉजिटरी को जोड़ने की कोशिश कर रहा था। निम्नलिखित त्रुटि का सामना करना पड़ रहा था।

fatal: refusing to merge unrelated histories on every try

-अलग-असंबंधित-हिस्टरी कमांड का उपयोग करें। यह पूरी तरह से काम करता है।

git pull origin branchname --allow-unrelated-histories
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.