git - गिट गिटहब से एक निश्चित शाखा खींचें




merge branch (6)

मेरे पास कई शाखाओं वाला एक प्रोजेक्ट है। मैं उन्हें GitHub में धक्का दे रहा हूं, और अब कोई और उन पर काम कर रहा है, मुझे गिटहब से खींचने की जरूरत है। यह मास्टर में ठीक काम करता है। लेकिन कहें कि मेरे पास शाखा xyz है। मैं गिटहब से शाखा xyz कैसे खींच सकता हूं और इसे अपने लोकहोस्ट पर शाखा xyz में विलय कर सकता हूं?

मेरे पास वास्तव में मेरा जवाब है: गिट में शाखाओं को पुश करें और खींचें

लेकिन मुझे एक त्रुटि मिलती है "! [खारिज]" और "नॉन फास्ट फॉरवर्ड" के बारे में कुछ।

कोई सुझाव?


लेकिन मुझे एक त्रुटि मिलती है "! [खारिज कर दिया]" और "नॉन फास्ट फॉरवर्ड" के बारे में कुछ

ऐसा इसलिए है क्योंकि गिट शाखाओं से आपके वर्तमान मास्टर में परिवर्तनों को विलय नहीं कर सकता है। मान लीजिए कि आपने शाखा master जांच की है, और आप रिमोट शाखा other-branch शाखा में विलय करना चाहते हैं। जब आप ऐसा करते हैं:

$ git pull origin other-branch

गिट मूल रूप से ऐसा कर रहा है:

$ git fetch origin other-branch && git merge other-branch

यही है, एक pull सिर्फ एक merge बाद एक merge । हालांकि, जब pull , तो गिट केवल other-branch विलय करेगा यदि यह तेजी से आगे विलय कर सकता है। एक फास्ट फॉरवर्ड विलय एक मर्ज है जिसमें आप जिस शाखा में विलय करने की कोशिश कर रहे हैं उसका सिर उस शाखा के सिर का प्रत्यक्ष वंशज है जिसे आप विलय करना चाहते हैं। उदाहरण के लिए, यदि आपके पास यह इतिहास वृक्ष है, तो other-branch विलय करने से परिणामस्वरूप तेजी से आगे बढ़ने का परिणाम होगा:

O-O-O-O-O-O
^         ^
master    other-branch

हालांकि, यह एक तेजी से आगे विलय नहीं होगा:

    v master
O-O-O
\
 \-O-O-O-O
         ^ other-branch

अपनी समस्या को हल करने के लिए, पहले रिमोट शाखा लाएं:

$ git fetch origin other-branch

फिर इसे अपनी वर्तमान शाखा में विलय करें (मैं उस master ), और किसी विलय विवादों को ठीक करें:

$ git merge origin/other-branch
# Fix merge conflicts, if they occur
# Add merge conflict fixes
$ git commit    # And commit the merge!

आप निम्न शाखाओं के साथ एक शाखा को शाखा में खींच सकते हैं।

git pull {repo} {remotebranchname}:{localbranchname}

git pull origin xyz:xyz

जब आप मास्टर शाखा में हों तो आप पहली बार शाखा की जांच भी कर सकते हैं:

git checkout -b xyz

यह मास्टर से एक नई शाखा, "xyz" बनाता है और सीधे इसे जांचता है।

फिर आप करते हैं:

git pull origin xyz

यह नई शाखा को आपकी स्थानीय xyz शाखा में खींचता है।


इससे मुझे दूसरे में विलय करने से पहले दूरस्थ शाखा प्राप्त करने में मदद मिली:

git fetch repo xyz:xyz
git checkout xyz

बस अपनी रिमोट शाखाओं को स्पष्ट रूप से ट्रैक करें और एक साधारण git pull केवल वही करेगा जो आप चाहते हैं:

git branch -f remote_branch_name origin/remote_branch_name
git checkout remote_branch_name

या फोर्किंग पर गिटहब दस्तावेज़ के साथ और भी अधिक उपयुक्त:

git branch -f new_local_branch_name upstream/remote_branch_name

सबसे अच्छा तरीका है:

git checkout -b <new_branch> <remote repo name>/<new_branch>

git fetch शाखाओं की नवीनतम सूची पकड़ लेंगे।

अब आप git checkout MyNewBranch कर सकते हैं

किया हुआ :)

अधिक जानकारी के लिए दस्तावेज़ देखें: गिट fetch







pull