खोज…
परिचय
Git के साथ धक्का देने के विपरीत, जहां आपके स्थानीय परिवर्तन केंद्रीय रिपॉजिटरी के सर्वर को भेजे जाते हैं, Git के साथ खींचने से सर्वर पर वर्तमान कोड होता है और यह रिपॉजिटरी के सर्वर से आपके स्थानीय मशीन पर नीचे खींचता है। यह विषय Git का उपयोग करते हुए भंडार से कोड खींचने की प्रक्रिया के साथ-साथ स्थानीय कोड में अलग-अलग कोड को खींचते समय किसी से मिलने वाली स्थितियों की व्याख्या करता है।
वाक्य - विन्यास
- git पुल [विकल्प [<रिपॉजिटरी> [<refspec> ...]]
पैरामीटर
पैरामीटर | विवरण |
---|---|
--quiet | कोई टेक्स्ट आउटपुट नहीं |
-q | शॉर्टहैंड --quiet |
--verbose | क्रिया पाठ आउटपुट। क्रमशः लाने और मर्ज करने / आदेश रद्द करने के लिए। |
-v | आशुलिपि - --verbose |
--[no-]recurse-submodules[=yes | on-demand | no] | सबमोडुल्स के लिए नए कमिट लाएँ? (ऐसा नहीं है कि यह एक पुल / चेकआउट नहीं है) |
टिप्पणियों
git pull
दिए गए मापदंडों के साथ git fetch
चलाता है और git merge
को वर्तमान शाखा में पुनः प्राप्त शाखा प्रमुखों को मर्ज git merge
लिए कहता है।
स्थानीय परिवर्तनों के साथ अद्यतन
जब स्थानीय परिवर्तन मौजूद होते हैं, तो git pull
कमांड एबॉर्ट्स रिपोर्टिंग:
त्रुटि: निम्न फ़ाइलों में आपके स्थानीय परिवर्तन मर्ज द्वारा अधिलेखित हो जाएंगे
अद्यतन करने के लिए (जैसे svn अद्यतन तोड़फोड़ के साथ किया था), आप चला सकते हैं:
git stash
git pull --rebase
git stash pop
एक सुविधाजनक तरीका एक उपनाम का उपयोग कर परिभाषित किया जा सकता है:
git config --global alias.up '!git stash && git pull --rebase && git stash pop'
git config --global alias.up 'pull --rebase --autostash'
आगे आप बस उपयोग कर सकते हैं:
git up
रिमोट से कोड खींचें
git pull
पुल, स्थानीय को अधिलेखित करें
git fetch
git reset --hard origin/master
खबरदार: जबकि reset --hard
का उपयोग करके खारिज कर दिया - reset --hard
reflog
और reset
का उपयोग करके पुनर्प्राप्त किया जा सकता है, अनकही परिवर्तन हमेशा के लिए हटा दिए जाते हैं।
origin
और master
को दूरस्थ और शाखा में बदलें, जिसे आप जबरन खींचना चाहते हैं, यदि वे अलग-अलग नाम से हैं।
खींचते समय रैखिक इतिहास रखते हैं
खींचते समय रिबासिंग करें
यदि आप दूरस्थ रिपॉजिटरी से नए कमिट में खींच रहे हैं और आपके पास वर्तमान शाखा पर स्थानीय परिवर्तन हैं तो git स्वचालित रूप से दूरस्थ संस्करण और आपके संस्करण को मर्ज कर देगा। यदि आप अपनी शाखा पर मर्ज की संख्या को कम करना चाहते हैं, तो आप शाखा के दूरस्थ संस्करण पर अपने कमिट को पुन: भेजने के लिए कह सकते हैं।
git pull --rebase
इसे डिफ़ॉल्ट व्यवहार बनाना
नई बनाई गई शाखाओं के लिए यह डिफ़ॉल्ट व्यवहार करने के लिए, निम्न कमांड टाइप करें:
git config branch.autosetuprebase always
मौजूदा शाखा के व्यवहार को बदलने के लिए, इसका उपयोग करें:
git config branch.BRANCH_NAME.rebase true
तथा
git pull --no-rebase
एक सामान्य मर्जिंग पुल का प्रदर्शन करने के लिए।
अगर तेजी से आगे की जाँच करें
केवल स्थानीय शाखा को अग्रेषित करने की अनुमति देने के लिए, आप इसका उपयोग कर सकते हैं:
git pull --ff-only
जब स्थानीय शाखा तेजी से अग्रेषित नहीं होती है, तो यह एक त्रुटि प्रदर्शित करेगा, और इसे या तो बगावत करने या अपस्ट्रीम में विलय करने की आवश्यकता है।
खींचो, "अनुमति से इनकार"
कुछ समस्याएँ हो सकती हैं। .git
फ़ोल्डर में गलत अनुमति है। पूर्ण .git
फ़ोल्डर के स्वामी को सेट करके इस समस्या को हल कर रहा है। कभी-कभी ऐसा होता है कि कोई अन्य उपयोगकर्ता .git
फ़ोल्डर या फ़ाइलों के अधिकारों को खींचता है और बदल देता है।
सम्स्या को ठीक कर्ने के लिये:
chown -R youruser:yourgroup .git/
स्थानीय रिपॉजिटरी में परिवर्तन करना
सरल खींच
जब आप किसी अन्य व्यक्ति के साथ दूरस्थ रिपॉजिटरी (कहते हैं, GitHub) पर काम कर रहे हैं, तो आप कुछ बिंदु पर उनके साथ अपने परिवर्तन साझा करना चाहते हैं। एक बार जब उन्होंने अपने परिवर्तनों को दूरस्थ रिपॉजिटरी में धकेल दिया , तो आप इस रिपॉजिटरी से खींचकर उन परिवर्तनों को पुनः प्राप्त कर सकते हैं।
git pull
अधिकांश मामलों में करेगा।
एक अलग रिमोट या शाखा से खींचो
आप उनके नामों को निर्दिष्ट करके एक अलग रिमोट या शाखा से परिवर्तन खींच सकते हैं
git pull origin feature-A
आपके स्थानीय शाखा में शाखा feature-A
फॉर्म origin
को खींच लेगा। ध्यान दें कि आप दूरस्थ नाम के बजाय सीधे URL की आपूर्ति कर सकते हैं, और एक शाखा नाम के बजाय एक वस्तु का नाम जैसे प्रतिबद्ध SHA।
मैनुअल पुल
गिट पुल के व्यवहार का अनुकरण करने के लिए, आप git fetch
उपयोग कर सकते हैं फिर git merge
कर सकते हैं
git fetch origin # retrieve objects and update refs from origin
git merge origin/feature-A # actually perform the merge
यह आपको अधिक नियंत्रण दे सकता है, और आपको विलय करने से पहले दूरस्थ शाखा का निरीक्षण करने की अनुमति देता है। दरअसल, लाने के बाद, आप दूरस्थ शाखाओं को git branch -a
साथ देख सकते हैं, और उनके साथ जांच कर सकते हैं
git checkout -b local-branch-name origin/feature-A # checkout the remote branch
# inspect the branch, make commits, squash, ammend or whatever
git checkout merging-branches # moving to the destination branch
git merge local-branch-name # performing the merge
पुल अनुरोधों को संसाधित करते समय यह बहुत आसान हो सकता है।