git - with - "यू" वास्तव में क्या करता है? "गिट पुश-यू मूल मास्टर" बनाम "गिट पुश मूल मास्टर"




integrate git bash with visual studio code (2)

मैं इसे समझने के अपने सर्वोत्तम प्रयासों के बावजूद, गिट का उपयोग करने में स्पष्ट रूप से भयानक हूं।

git push लिए kernel.org से:

-u

--set-नदी के ऊपर

अद्यतित या सफलतापूर्वक धक्का देने वाली प्रत्येक शाखा के लिए, अपस्ट्रीम (ट्रैकिंग) संदर्भ जोड़ें, तर्क-कम गिट-पुल (1) और अन्य आदेशों द्वारा उपयोग किया जाता है। अधिक जानकारी के लिए, branch.<name>.merge देखें branch.<name>.merge -config (1) में branch.<name>.merge

यहां branch.<name>.mergegit config से branch.<name>.merge :

branch.<name>.merge

branch.<name>.remote साथ एक साथ परिभाषित करता है branch.<name>.remote , दी गई शाखा के लिए अपस्ट्रीम शाखा। यह गिट fetch / git खींचता है कि कौन सी शाखा विलय करने के लिए और गिट पुश को भी प्रभावित कर सकती है (push.default देखें)। शाखा <name> , यह गिट को FETCH_HEAD में विलय करने के लिए डिफ़ॉल्ट रेफस्पेक को चिह्नित करने के लिए कहता है। मान को रेफस्पेक के रिमोट भाग की तरह संभाला जाता है, और उसे "branch.<name>.remote" द्वारा दिए गए रिमोट से प्राप्त एक रेफरी से मेल खाना चाहिए। मर्ज जानकारी का उपयोग गिट पुल द्वारा किया जाता है (जो पहले गिट फ़ेच पर कॉल करता है) विलय के लिए डिफ़ॉल्ट शाखा को देखने के लिए। इस विकल्प के बिना, ग्रिट को पहले रेफस्पेक को मर्ज करने के लिए डिफ़ॉल्ट खींचें। ऑक्टोपस विलय प्राप्त करने के लिए एकाधिक मान निर्दिष्ट करें। यदि आप गिट पुल सेट करना चाहते हैं ताकि यह स्थानीय भंडार में किसी अन्य शाखा से <name> में विलीन हो जाए, तो आप branch.<name>.merge को इंगित कर सकते हैं branch.<name>.merge इच्छित शाखा में branch.<name>.merge , और विशेष सेटिंग का उपयोग करें। (एक अवधि) branch.<name>.remote

मैंने सफलतापूर्वक जीथ्यूब के साथ एक दूरस्थ भंडार स्थापित किया, और मैंने सफलतापूर्वक इसके साथ अपनी पहली प्रतिबद्धता को धक्का दिया:

git push -u origin master

फिर, मैंने अपने रिमोट रिपोजिटरी में अनजाने में सफलतापूर्वक मेरी दूसरी प्रतिबद्धता को धक्का दिया:

git commit -m '[...]'

हालांकि, गलत तरीके से सोचने के लिए मुझे master से origin से फिर से धक्का देना होगा, मैं भाग गया:

# note: no -u
git push origin master

उसने क्या किया? ऐसा कोई प्रभाव नहीं प्रतीत होता है। क्या मैंने git push -u origin master "पूर्ववत" किया था?


कुंजी "तर्क-कम गिट-पुल" है। जब आप किसी स्रोत से रिमोट या शाखा निर्दिष्ट किए बिना शाखा से git pull , तो गिट शाखा को देखता है branch.<name>.merge सेटिंग यह जानने के लिए कि कहां से खींचना है। git push -u इस जानकारी को उस शाखा के लिए सेट करता है जिसे आप दबा रहे हैं।

अंतर देखने के लिए, आइए एक नई खाली शाखा का उपयोग करें:

$ git checkout -b test

सबसे पहले, हम बिना -u धक्का देते हैं:

$ git push origin test
$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.test.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:

    [branch "test"]
    remote = <nickname>
    merge = <remote-ref>

    [remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.

अब अगर हम -u जोड़ते हैं:

$ git push -u origin test
Branch test set up to track remote branch test from origin.
Everything up-to-date
$ git pull
Already up-to-date.

ध्यान दें कि ट्रैकिंग जानकारी स्थापित की गई है ताकि git pull रिमोट या शाखा निर्दिष्ट किए बिना अपेक्षित कार्य करे।

अद्यतन: बोनस युक्तियाँ:

  • चूंकि मार्क एक टिप्पणी में उल्लेख करता है, git pull अलावा यह सेटिंग git push डिफ़ॉल्ट व्यवहार को भी प्रभावित करती है। यदि आप दूरस्थ शाखा को कैप्चर करने के लिए उपयोग करने की आदत में हैं, तो आप ट्रैक करने का इरादा रखते हैं, तो मैं आपके push.default कॉन्फ़िगरेशन मान को upstream सेट करने की अनुशंसा करता हूं।
  • git push -u <remote> HEAD मौजूदा शाखा को उसी नाम की शाखा में <remote> पर धक्का देगी (और ट्रैकिंग सेट अप भी कर सकता है ताकि आप उसके बाद git push कर सकें)।

गिटूब में धक्का और खींचने के लिए सभी जरूरी गिट बैश कमांड:

git status 
git pull
git add filefullpath

git commit -m "comments for checkin file" 
git push origin branch/master
git remote -v 
git log -2 

अगर आप एक फाइल को संपादित करना चाहते हैं तो:

edit filename.* 

सभी शाखाओं और उनके कामों को देखने के लिए:

git show-branch




git