लेकिन क्या ट्रैकिंग जानकारी वहां से शुरू नहीं हुई है?
नहीं: जब आप एक नई शाखा स्थानीय रूप से बनाने के लिए, Git मान नहीं होंगे जहां (जो दूरस्थ रेपो के लिए) आप इसे पुश करने के लिए चाहते हैं।
अधिक विशेष रूप से, एक सरल git push
(-u
के बिना) स्थानीय config branch.<name>.remote
और branch.<name>.merge
, जो जब एक स्थानीय शाखा एक नदी के ऊपर यह करने के लिए जुड़े शाखा स्थापित कर रहे हैं सेट नहीं करेगा।
पहली बार जब आप उस शाखा को दबाएंगे तो आपको अपस्ट्रीम रेपो निर्दिष्ट करना होगा।
यह एक git clone
(man page) से अलग है:
क्लोन एक नव निर्मित निर्देशिका में भंडार है, क्लोन भंडार में प्रत्येक शाखा (git branch -r
का उपयोग कर योग्य) के लिए रिमोट ट्रैकिंग शाखाओं बनाता है, और बनाता है और एक प्रारंभिक बाहर की जाँच करता है शाखा जो क्लोन रिपोजिटरी की वर्तमान सक्रिय शाखा से फंसे हुए हैं।
एक रिमोट ट्रैकिंग शाखा के बाद से अस्तित्व में के लिए, (उदाहरण के लिए) origin/master
जब git clone
चेकआउट master
करता है, ने कहा कि master
स्वतः अपनी नदी के ऊपर शाखा origin/master
साथ संबद्ध किया जाएगा।
देखें git checkout
तो <branch>
नहीं मिला है लेकिन वहाँ
$ git checkout -b <branch> --track <remote>/<branch>
लिए वास्तव में एक दूरदराज के एक मेल खाने वाले नाम (यह <remote>
कहते हैं), इलाज के रूप में बराबर में एक ट्रैकिंग शाखा मौजूद नहीं है यही कारण है कि यही कारण है कि आप सीधे क्लोन के बाद master
से धक्का दे सकते हैं, लेकिन आप एक नई शाखा बनाने के बाद सीधे धक्का नहीं दे सकते (जिसके लिए origin/newBranch
आपके स्थानीय रेपो में पहले से मौजूद रिमोट ट्रैकिंग शाखा नहीं है)
वह चेकआउट (स्वचालित रूप से मौजूदा रिमोट ट्रैकिंग शाखा origin/<branch>
पर ट्रैकिंग) स्थानीय कॉन्फ़िगरेशन branch.<name>.remote
और branch.<name>.merge
सेट करेगा।
$ git branch --set-upstream-to=origin/feature/xyz
तो आप विकल्प (-u -u पुश करने के लिए की जरूरत है -:
यदि आप मौजूद नहीं हैं तो आप स्थानीय शाखा को मूल/न्यूब्रैंच में धक्का दे सकते हैं। प्रारंभिक धक्का शाखा बनाता है (मुझे लगता है कि यह सर्वर का एक विशिष्ट कार्यान्वयन है)। किसी भी बाद के पुल या पुश को "रिमोट" का उपयोग डिफ़ॉल्ट रूप से किया जाता है। मैं इसे "--track" –
@VincePanuccio No का उपयोग किये बिना हर समय करता हूं, एक नई शाखा को दबाकर स्वचालित रूप से इसे ट्रैक नहीं किया जाएगा। लेकिन एक रेपो क्लोनिंग, एक ही शाखा का चेकआउट करना, जैसा कि मैंने जवाब में उल्लेख किया है। – VonC
जब मैं एक स्थानीय शाखा बनाता हूं, तो मैं धक्का देता हूं और इसे बनाया जाता है और फिर मैं ट्रैकिंग जानकारी दर्ज किए बिना इसे धक्का और खींच सकता हूं। हो सकता है कि आप इसे जिस तरह से सोच रहे हों उस पर नज़र डालें, लेकिन स्पष्ट रूप से वहां कुछ प्रकार का लिंक है। अगर कोई रिमोट शाखा में बदलाव करता है तो मैं बिना किसी ट्रैकिंग जानकारी के इसे नीचे खींच सकता हूं। –