खोज…
परिचय
Git के साथ कोड बदलने, स्टेजिंग और कमिट करने के बाद, अपने बदलावों को दूसरों के लिए उपलब्ध कराने और रिपॉजिटरी सर्वर में आपके स्थानीय परिवर्तनों को स्थानांतरित करने के लिए पुश करना आवश्यक है। यह विषय Git का उपयोग करके कोड को ठीक से पुश करने के तरीके को कवर करेगा।
वाक्य - विन्यास
- git push [-f | --फोर्स] [-v | --verbose] [<रिमोट> [<refspec> ...]]
पैरामीटर
पैरामीटर | विवरण |
---|---|
--force | आपके स्थानीय रेफरी से मिलान करने के लिए रिमोट रेफरी को ओवरराइट करता है। रिमोट रिपॉजिटरी को कम करने का कारण बन सकता है, इसलिए देखभाल के साथ उपयोग करें । |
--verbose | मौखिक रूप से चलाएं। |
<दूरस्थ> | रिमोट रिपॉजिटरी जो पुश ऑपरेशन का गंतव्य है। |
<Refspec> ... | निर्दिष्ट करें कि क्या स्थानीय रेफरी या वस्तु के साथ अद्यतन करने के लिए दूरस्थ रेफरी। |
टिप्पणियों
धारा के विरुद्ध धारा के साथ
स्रोत नियंत्रण के संदर्भ में, जब आप रिपॉजिटरी से कॉपी (क्लोन, चेकआउट आदि) करते हैं तो आप "डाउनस्ट्रीम" होते हैं। सूचना आपके लिए "डाउनस्ट्रीम" प्रवाहित हुई।
जब आप परिवर्तन करते हैं, तो आप आमतौर पर उन्हें "अपस्ट्रीम" वापस भेजना चाहते हैं, इसलिए वे इसे उस भंडार में भेजते हैं ताकि सभी उसी स्रोत से खींच रहे सभी समान परिवर्तनों के साथ काम कर रहे हों। यह ज्यादातर एक सामाजिक मुद्दा है कि कैसे हर कोई स्रोत नियंत्रण की तकनीकी आवश्यकता के बजाय अपने काम का समन्वय कर सकता है। आप अपने बदलावों को मुख्य परियोजना में लाना चाहते हैं ताकि आप विकास की अलग-अलग रेखाओं पर नज़र न रखें।
कभी-कभी आप "अपस्ट्रीम" में परिवर्तन प्रस्तुत करने की बात करते हुए पैकेज या रिलीज़ मैनेजर (लोगों, उपकरण नहीं) के बारे में पढ़ेंगे। आमतौर पर इसका मतलब है कि उन्हें मूल स्रोतों को समायोजित करना था ताकि वे अपने सिस्टम के लिए एक पैकेज बना सकें। वे उन परिवर्तनों को जारी नहीं रखना चाहते हैं, इसलिए यदि वे उन्हें मूल स्रोत पर "अपस्ट्रीम" भेजते हैं, तो उन्हें अगली रिलीज में एक ही मुद्दे से नहीं निपटना चाहिए।
( स्रोत )
धक्का दें
git push
आपके कोड को आपके मौजूदा अपस्ट्रीम पर धकेल देगा। पुश कॉन्फ़िगरेशन के आधार पर, यह या तो आपके द्वारा वर्तमान शाखा (Git 2.x में डिफ़ॉल्ट) या सभी शाखाओं (Git 1.x में डिफ़ॉल्ट) से कोड धक्का देगा।
दूरस्थ रिपॉजिटरी निर्दिष्ट करें
गिट के साथ काम करते समय, कई दूरस्थ रिपॉजिटरी होना आसान हो सकता है। पुश करने के लिए एक दूरस्थ रिपॉजिटरी निर्दिष्ट करने के लिए, बस अपना नाम कमांड में जोड़ें।
git push origin
शाखा निर्दिष्ट करें
किसी विशिष्ट शाखा में जाने के लिए, feature_x
x feature_x
:
git push origin feature_x
दूरस्थ ट्रैकिंग शाखा सेट करें
जब तक आप मूल रूप से काम कर रहे हैं, तब तक रिमोट रिपॉजिटरी से नहीं आता है, बस पहली बार काम करने के दौरान git push
का उपयोग नहीं किया जाएगा। वर्तमान शाखा को किसी विशिष्ट दूरस्थ / शाखा संयोजन में धकेलने के लिए आपको बताने के लिए आपको निम्न कमांड करनी चाहिए
git push --set-upstream origin master
इधर, master
रिमोट पर शाखा का नाम है origin
। आप उपयोग कर सकते हैं -u
एक शॉर्टहैंड के रूप में --set-upstream
।
एक नए भंडार में धक्का
एक रिपॉजिटरी पर धकेलने के लिए जिसे आपने अभी तक नहीं बनाया है, या खाली है:
- GitHub पर रिपॉजिटरी बनाएं (यदि लागू हो)
- आपको दिए गए url की प्रतिलिपि
https://github.com/USERNAME/REPO_NAME.git
के रूप में दें - अपने स्थानीय रिपॉजिटरी में जाएं, और
git remote add origin URL
निष्पादितgit remote add origin URL
- यह सत्यापित करने के लिए जोड़ा गया था,
git remote -v
चलाएं
- यह सत्यापित करने के लिए जोड़ा गया था,
- रन
git push origin master
आपका कोड अब GitHub पर होना चाहिए
अधिक जानकारी के लिए दूरस्थ रिपॉजिटरी को जोड़ना देखें
व्याख्या
पुश कोड का मतलब है कि git आपके स्थानीय कमिट और रिमोट के अंतर का विश्लेषण करेगा और उन्हें अपस्ट्रीम पर लिखे जाने के लिए भेज देगा। जब पुश सफल होता है, तो आपकी स्थानीय रिपॉजिटरी और रिमोट रिपॉजिटरी सिंक्रनाइज़ हो जाती हैं और अन्य उपयोगकर्ता आपके कमिट्स देख सकते हैं।
"अपस्ट्रीम" और "डाउनस्ट्रीम" की अवधारणाओं पर अधिक जानकारी के लिए, रिमार्क्स देखें।
बल लगाना
कभी-कभी, जब आपके पास दूरस्थ परिवर्तनों के साथ असंगत स्थानीय परिवर्तन होते हैं (यानी, जब आप दूरस्थ शाखा को तेज़ी से अग्रेषित नहीं कर सकते हैं, या दूरस्थ शाखा आपके स्थानीय शाखा का प्रत्यक्ष पूर्वज नहीं है), तो आपके परिवर्तनों को आगे बढ़ाने का एकमात्र तरीका बल धक्का है ।
git push -f
या
git push --force
महत्वपूर्ण लेख
यह किसी भी दूरस्थ परिवर्तन को अधिलेखित कर देगा और आपका रिमोट आपके स्थानीय से मेल खाएगा।
ध्यान दें: इस कमांड का उपयोग करने से दूरस्थ रिपॉजिटरी को कम करने का कारण हो सकता है । इसके अलावा, यदि आप इस रिमोट रिपॉजिटरी को दूसरों के साथ साझा कर रहे हैं, तो यह जोरदार तरीके से करने की सलाह दी जाती है, क्योंकि उनका इतिहास हर अधिलेखित कमिटमेंट को बनाए रखेगा, इसलिए रिमोट रिपॉजिटरी के साथ सिंक के बाहर उनके काम को रोकना होगा।
अंगूठे के नियम के रूप में, केवल बल को धक्का जब:
- आपके द्वारा किए गए परिवर्तनों को खींचने के लिए आपके अलावा किसी ने भी प्रयास नहीं किया
- आप सभी को जबरन धक्का देने के बाद एक नई प्रति का क्लोन बनाने के लिए बाध्य कर सकते हैं और हर कोई अपने बदलावों को लागू कर सकता है (लोग इसके लिए आपसे घृणा कर सकते हैं)।
किसी विशिष्ट ऑब्जेक्ट को दूरस्थ शाखा में पुश करें
सामान्य वाक्यविन्यास
git push <remotename> <object>:<remotebranchname>
उदाहरण
git push origin master:wip-yourname
अपनी मास्टर शाखा को मूल के wip-yourname
शाखा पर धकेल देगा (अधिकांश समय, जिस रिपॉजिटरी से आपने क्लोन किया था)।
दूरस्थ शाखा हटाएं
दूरस्थ शाखा को हटाना किसी खाली वस्तु को धकेलने के बराबर है।
git push <remotename> :<remotebranchname>
उदाहरण
git push origin :wip-yourname
दूरस्थ शाखा को मिटा wip-yourname
बृहदान्त्र का उपयोग करने के बजाय, आप --delete ध्वज का उपयोग भी कर सकते हैं, जो कुछ मामलों में बेहतर पठनीय है।
उदाहरण
git push origin --delete wip-yourname
एक एकल प्रतिबद्ध धक्का
यदि आपके पास अपनी शाखा में एक भी ऐसा कमिटमेंट है जिसे आप किसी और चीज को धकेलने के बिना रिमोट पर पुश करना चाहते हैं, तो आप निम्नलिखित का उपयोग कर सकते हैं
git push <remotename> <commit SHA>:<remotebranchname>
उदाहरण
इस तरह एक जीआईटी इतिहास मान लेना
eeb32bc Commit 1 - already pushed
347d700 Commit 2 - want to push
e539af8 Commit 3 - only local
5d339db Commit 4 - only local
केवल 347d700 को कमिट करने के लिए रिमोट मास्टर निम्नलिखित कमांड का उपयोग करें
git push origin 347d700:master
डिफ़ॉल्ट पुश व्यवहार को बदलना
वर्तमान दूरस्थ रिपॉजिटरी पर शाखा को अद्यतन करता है जो वर्तमान कार्य शाखा के साथ एक नाम साझा करता है।
git config push.default current
सरल अपस्ट्रीम शाखा को धक्का देता है, लेकिन काम नहीं करेगा यदि अपस्ट्रीम शाखा को कुछ और कहा जाता है।
git config push.default simple
अपस्ट्रीम को अपस्ट्रीम ब्रांच में धकेल दिया जाता है, चाहे इसे कोई भी कहे।
git config push.default upstream
मैचिंग सभी शाखाओं को धक्का देती है जो स्थानीय और रिमोट गिट कॉन्फिग पुश पर मेल खाती है। अपस्ट्रीम अपस्ट्रीम
पसंदीदा शैली सेट करने के बाद, उपयोग करें
git push
दूरस्थ रिपॉजिटरी को अद्यतन करने के लिए।
टैग्स को पुश करें
git push --tags
स्थानीय रिपॉजिटरी में उन सभी git tags
को पुश करता है जो रिमोट में नहीं हैं।