master
, HEAD
, origin/something
और हो सकता है कुछ टैग, क्यों नहीं, एक ही करने के लिए सभी बिंदु प्रतिबद्ध हो सकता है, लेकिन वे निश्चित रूप से एक ही बात नहीं कर रहे हैं।
origin
आमतौर पर remote repository का नाम होता है।
आप अपने रिमोट देख सकते हैं और git remote -v
के साथ नए कॉन्फ़िगर कर सकते हैं।
इसे आजमाएं (-v
के साथ) और यह शायद समझ में आ जाएगा।
remote/somebranch
रिमोट रिपोजिटरी पर कुछ शाखाओं के प्रमुख को इंगित करता है।
origin/master
पर master
के प्रमुख को इंगित करता है।
क्या यह master
जैसा ही है?
हां और नहीं। यदि आप अपनी मास्टर शाखा खींचते हैं, तो कुछ काम करें और इस बीच कोई और master
पर चलता है और origin
पर जाता है, तो वे अलग-अलग होंगे।
जब आप एक git fetch origin
, तो, origin/master
अतिरिक्त प्रतिबद्ध होगा करना (आगे हो जाएगा)।
HEAD
बस "वर्तमान प्रतिबद्धता" है। इसे .
के रूप में सोचें।
this question
देखें फिर, यह एक ही हो सकता है master
के रूप में, लेकिन यदि आप किसी अन्य शाखा की जाँच या प्रतिबद्ध या एक रिबेस के बीच में हैं, ठीक है, यह नहीं है।
तो जिस पर किसी और काम कर रहा है एक ताजा भंडार पर इस कोशिश:
$ git checkout master
$ git log -1 --format="%H" HEAD
123abc
$ git log -1 --format="%H" origin/master
123abc
वे एक ही कर रहे हैं!
$ git diff origin/master
बेशक उनकी सामग्री एक जैसी है।
$ echo "foo" > foo
$ git add foo
$ git commit -m "Foo the thingy"
$ git log -1 --format="%H" HEAD
321bca
$ git log -1 --format="%H" origin/master
123abc
आह, देखो, अब वे अलग-अलग हैं!
$ git push origin master
$ git log -1 --format="%H" HEAD
321bca
$ git log -1 --format="%H" origin/master
321bca
और अब वे नहीं हैं! हमने अपनी नवीनतम प्रतिबद्धता को धक्का दिया है और वे दोनों एक ही इंगित करते हैं।
$ git checkout -b newbranch
$ echo "baz" > baz
$ git add baz
$ git commit -m "Baz the thingy with the stuff"
$ git branch -a
master
* new_branch
origin/master
$ git log -1 --format="%H"
789def
$ git log -1 --format="%H" master
321bca
git log -1 --format="%H" origin/master
321bca
git log -1 --format="%H" origin/new_branch
unknown revision or path not in the working tree.
बेशक नहीं। हम origin
को new_branch
धक्का दिया नहीं किया है, यह केवल हमारे स्थानीय मशीन
git checkout 123abc
हम सिर्फ 123abc
बाहर जाँच कर ली है, master
की पुरानी सिर पर है। यह अब किसी भी शाखा का मुखिया नहीं है, लेकिन हम इसे वही देख सकते हैं।
Note: checking out 123abc. You are in 'detached HEAD' state, etc
$ git checkout -b old_master
$ git branch -a
master
* new_branch
origin/master
old_master
अब अनुमान लगाएं कि उनका SHA1 क्रमशः क्या होगा?
'origin' के सापेक्ष को देखने के लिए कर सकते हैं 'gitrevisions (7)' में ' 'प्रविष्टि द्वारा समझाया जाए; यह पूरी तरह से 'refs/remotes/orig/HEAD' तक फैलता है। 'उत्पत्ति/मास्टर' 'refs/remotes/origin/master' तक फैलता है, और इसी तरह 'मूल/शाखा'' रेफ/रिमोट/मूल/शाखा 'तक विस्तारित होगा (जैसा कि आपने कहा था, यह मौजूद है)। –
chepner