Git
गिट सिंटैक्स रिवाइज करता है
खोज…
टिप्पणियों
कई Git कमांड पुनरीक्षण मापदंडों को तर्क के रूप में लेते हैं। कमांड के आधार पर, वे एक विशिष्ट कमिट को निरूपित करते हैं या, कमांड के लिए जो रिवीजन ग्राफ (जैसे गिट-लॉग (1) ) चलते हैं, सभी कमिट्स हैं जो उस कमिट से पहुंचा जा सकता है। उन्हें आमतौर पर वाक्यविन्यास विवरण में <commit>
, या <rev>
, या <revision>
रूप में दर्शाया जाता है।
Git संशोधन सिंटैक्स के लिए संदर्भ प्रलेखन gitrevisions (7) मैनपेज है।
अभी भी इस पृष्ठ से गायब है:
- [_]
git describe
से आउटपुट, उदाहरण के लिएv1.7.4.2-679-g3bee7fb
- [_]
@
अकेलेHEAD
लिए एक शॉर्टकट के रूप में - [_]
@{-<n>}
, उदा@{-1}
, और-
अर्थ@{-1}
- [_]
<branchname>@{push}
- [_]
<rev>^@
, सभी बच्चों के लिए<rev>
अलग दस्तावेज चाहिए:
- [_] रिपॉजिटरी और इंडेक्स में ब्लॉब्स और पेड़ों का जिक्र:
<rev>:<path>
और:<n>:<path>
वाक्य रचना - [_] संशोधन में
A..B
,A...B
,B ^A
,A^1
, और संशोधन की तरह सीमा होती है जैसे-<n>
,--since
ऑब्जेक्ट नाम द्वारा संशोधन निर्दिष्ट करना
$ git show dae86e1950b1277e545cee180551750029cfe735
$ git show dae86e19
आप SHA-1 ऑब्जेक्ट नाम, या तो पूर्ण 40-बाइट हेक्साडेसिमल स्ट्रिंग का उपयोग करके संशोधन (या किसी भी वस्तु में: किसी भी वस्तु: टैग, ट्री अर्थात निर्देशिका सामग्री, बूँद यानी फ़ाइल सामग्री) को निर्दिष्ट कर सकते हैं या एक विकल्प जो रिपॉजिटरी के लिए अद्वितीय है।
प्रतीकात्मक रेफरी नाम: शाखाएँ, टैग, रिमोट-ट्रैकिंग शाखाएँ
$ git log master # specify branch
$ git show v1.0 # specify tag
$ git show HEAD # specify current branch
$ git show origin # specify default remote-tracking branch for remote 'origin'
आप एक प्रतीकात्मक रेफरी नाम का उपयोग करके संशोधन निर्दिष्ट कर सकते हैं, जिसमें शाखाएं शामिल हैं (उदाहरण के लिए 'मास्टर', 'नेक्स्ट', 'मेन्ट'), टैग (उदाहरण के लिए 'v1.0', 'v0.6.3-rc2'), रिमोट- ट्रैकिंग शाखाएँ (उदाहरण के लिए 'मूल', 'मूल / मास्टर'), और विशेष शाखाएँ जैसे कि '' हेड '' वर्तमान शाखा के लिए।
यदि प्रतीकात्मक रेफरी नाम अस्पष्ट है, उदाहरण के लिए यदि आपके पास 'फिक्स' नाम की शाखा और टैग दोनों हैं, (उसी नाम के साथ शाखा और टैग की अनुशंसा नहीं की जाती है), तो आपको उस तरह का रेफ निर्दिष्ट करना होगा जिसका आप उपयोग करना चाहते हैं:
$ git show heads/fix # or 'refs/heads/fix', to specify branch
$ git show tags/fix # or 'refs/tags/fix', to specify tag
डिफ़ॉल्ट संशोधन: हेड
$ git show # equivalent to 'git show HEAD'
Commit HEAD ’उस कमेटी का नाम देता है, जिस पर आपने वर्किंग ट्री में बदलावों को आधार बनाया है, और आमतौर पर वर्तमान ब्रांच का प्रतीकात्मक नाम है। कई (लेकिन सभी नहीं) कमांड जो संशोधन पैरामीटर चूक को 'हेड' में ले जाते हैं अगर यह गायब है।
संदर्भ देखें: @ { }
$ git show @{1} # uses reflog for current branch
$ git show master@{1} # uses reflog for branch 'master'
$ git show HEAD@{1} # uses 'HEAD' reflog
एक रेफरी, आमतौर पर एक शाखा या HEAD, जिसके बाद प्रत्यय @
होता है, जिसके साथ एक बर्ड पेयर में संलग्न एक विशेष विनिर्देश होता है (जैसे {1}
, {15}
) आपके स्थानीय रिपॉजिटरी में उस रेफरी के n-वें पूर्व मूल्य को निर्दिष्ट करता है । आप के साथ हाल के reflog प्रविष्टियों की जांच कर सकते git reflog
आदेश, या --walk-reflogs
/ -g
के लिए विकल्प git log
।
$ git reflog
08bb350 HEAD@{0}: reset: moving to HEAD^
4ebf58d HEAD@{1}: commit: gitweb(1): Document query parameters
08bb350 HEAD@{2}: pull: Fast-forward
f34be46 HEAD@{3}: checkout: moving from af40944bda352190f05d22b7cb8fe88beb17f3a7 to master
af40944 HEAD@{4}: checkout: moving from master to v2.6.3
$ git reflog gitweb-docs
4ebf58d gitweb-docs@{0}: branch: Created from master
नोट : ORIG_HEAD
रेफरी (लगभग HEAD@{1}
समतुल्य) के उपयोग के पुराने तंत्र की जगह पर रिफ्लैक्स का उपयोग करके व्यावहारिक रूप से बदल दिया गया है।
संदर्भ देखें: @ { }
$ git show master@{yesterday}
$ git show HEAD@{5 minutes ago} # or HEAD@{5.minutes.ago}
चूहे की जोड़ी में संलग्न डेट विनिर्देश के साथ प्रत्यय @
बाद एक रेफरी (जैसे {yesterday}
, {1 month 2 weeks 3 days 1 hour 1 second ago}
या {1979-02-26 18:30:00}
निर्दिष्ट करता है समय में एक पूर्व बिंदु पर रेफरी का मान (या इसके निकटतम बिंदु)। ध्यान दें कि यह एक निश्चित समय पर आपके स्थानीय रेफ की स्थिति को देखता है; उदाहरण के लिए, पिछले सप्ताह आपकी स्थानीय 'मास्टर' शाखा में क्या था।
आप सही समय देखने के लिए डेट git reflog
साथ git reflog
उपयोग कर सकते हैं जहां आपने स्थानीय रिपॉजिटरी में दिए गए रेफरी के लिए कुछ किया है।
$ git reflog HEAD@{now}
08bb350 HEAD@{Sat Jul 23 19:48:13 2016 +0200}: reset: moving to HEAD^
4ebf58d HEAD@{Sat Jul 23 19:39:20 2016 +0200}: commit: gitweb(1): Document query parameters
08bb350 HEAD@{Sat Jul 23 19:26:43 2016 +0200}: pull: Fast-forward
ट्रैक / अपस्ट्रीम शाखा: @ {} नदी के ऊपर
$ git log @{upstream}.. # what was done locally and not yet published, current branch
$ git show master@{upstream} # show upstream of branch 'master'
प्रत्यय @{upstream}
को ब्रांचनाम (लघु रूप <branchname>@{u}
) में जोड़ा जाता है, शाखा को संदर्भित करता है कि ब्रांचनाम द्वारा निर्दिष्ट शाखा को शाखा के ऊपर बनाने के लिए सेट किया गया है ( branch.<name>.remote
साथ कॉन्फ़िगर किया गया है branch.<name>.remote
और branch.<name>.merge
, या git branch --set-upstream-to=<branch>
साथ git branch --set-upstream-to=<branch>
)। एक लापता ब्रांचनाम वर्तमान में चूक करता है।
पुनरीक्षण श्रेणियों के लिए सिंटैक्स के साथ-साथ यह देखना बहुत उपयोगी है कि आपकी शाखा अपस्ट्रीम से आगे है (आपके स्थानीय रिपॉजिटरी में कमेंट अभी तक अपस्ट्रीम में मौजूद नहीं है), और जो आपके पीछे है वह (स्थानीय शाखा में विलय नहीं होने पर आगे बढ़ता है), या दोनों:
$ git log --oneline @{u}..
$ git log --oneline ..@{u}
$ git log --oneline --left-right @{u}... # same as ...@{u}
पूर्वजों की श्रृंखला बनाएं: ^, ~ , आदि।
$ git reset --hard HEAD^ # discard last commit
$ git rebase --interactive HEAD~5 # rebase last 4 commits
संशोधन पैरामीटर के लिए प्रत्यय ^
का अर्थ है उस प्रतिबद्ध वस्तु का पहला अभिभावक। ^<n>
अर्थ है <n> -थ अभिभावक (अर्थात <rev>^
<rev>^1
बराबर है)।
एक संशोधन पैरामीटर के लिए एक प्रत्यय ~<n>
का अर्थ है कि पहले माता-पिता के बाद, नाम वस्तु के <n> -th पीढ़ी पूर्वज है कि प्रतिबद्ध वस्तु है। इसका मतलब यह है कि उदाहरण के लिए <rev>~3
<rev>^^^
बराबर है। शॉर्टकट के रूप में, <rev>~
अर्थ है <rev>~1
, और संक्षेप में <rev>^1
, या <rev>^
बराबर है।
यह वाक्य रचना रचना योग्य है।
ऐसे प्रतीकात्मक नाम खोजने के लिए आप git name-rev
कमांड का उपयोग कर सकते हैं:
$ git name-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a
33db5f4d9027a10e477ccf054b2c1ab94f74c85a tags/v0.99~940
ध्यान दें कि - निम्न उदाहरण में --pretty=oneline
और नहीं --oneline
का उपयोग किया जाना चाहिए
$ git log --pretty=oneline | git name-rev --stdin --name-only
master Sixth batch of topics for 2.10
master~1 Merge branch 'ls/p4-tmp-refs'
master~2 Merge branch 'js/am-call-theirs-theirs-in-fallback-3way'
[...]
master~14^2 sideband.c: small optimization of strbuf usage
master~16^2 connect: read $GIT_SSH_COMMAND from config file
[...]
master~22^2~1 t7810-grep.sh: fix a whitespace inconsistency
master~22^2~2 t7810-grep.sh: fix duplicated test name
शाखाएं और टैग: ^ 0, ^ { }
कुछ मामलों में एक कमांड का व्यवहार इस बात पर निर्भर करता है कि क्या उसे शाखा का नाम, टैग नाम या एक मनमाना संशोधन दिया गया है। यदि आपको बाद की आवश्यकता है तो आप "डी-रेफ़रिंग" सिंटैक्स का उपयोग कर सकते हैं।
एक प्रत्यय ^
एक वस्तु प्रकार नाम ( tag
, commit
, tree
, blob
) के बाद ब्रेस पेयर में संलग्न है (उदाहरण के लिए v0.99.8^{commit}
) का अर्थ है वस्तु को <rev>
पुनरावर्ती रूप से तब तक जब तक कोई प्रकार का ऑब्जेक्ट <type>
पाया जाता है या वस्तु को अब और नहीं दिया जा सकता है। <rev>^0
<rev>^{commit}
लिए एक छोटा हाथ है।
$ git checkout HEAD^0 # equivalent to 'git checkout --detach' in modern Git
एक प्रत्यय ^
एक खाली ब्रेस जोड़ी के बाद (उदाहरण के लिए v0.99.8^{}
) गैर-टैग ऑब्जेक्ट मिलने तक टैग को पुनरावृत्ति करने का मतलब है।
तुलना
$ git show v1.0
$ git cat-file -p v1.0
$ git replace --edit v1.0
साथ में
$ git show v1.0^{}
$ git cat-file -p v1.0^{}
$ git replace --edit v1.0^{}
सबसे कम उम्र का मिलान ^ {/ },: /
$ git show HEAD^{/fix nasty bug} # find starting from HEAD
$ git show ':/fix nasty bug' # find starting from any branch
एक बृहदान्त्र (' :
'), एक स्लैश (' /
') के बाद, एक पाठ द्वारा पीछा किया जाता है, एक प्रतिबद्ध नाम देता है जिसका प्रतिबद्ध संदेश निर्दिष्ट नियमित अभिव्यक्ति से मेल खाता है। यह नाम सबसे कम उम्र की मैचिंग कमेटी को लौटाता है जो किसी भी रेफरी से उपलब्ध है। नियमित अभिव्यक्ति प्रतिबद्ध संदेश के किसी भी हिस्से से मेल खा सकती है। एक स्ट्रिंग के साथ शुरू होने वाले संदेशों से मेल खाने के लिए, कोई उदाहरण :/^foo
उपयोग कर सकता है। विशेष क्रम :/!
मिलान के लिए संशोधक के लिए आरक्षित है। :/!-foo
एक नकारात्मक मैच करता है, जबकि :/!!foo
एक शाब्दिक मेल खाता है! चरित्र, इसके बाद foo
।
संशोधन प्रत्यय के लिए एक प्रत्यय ^
, जिसके बाद एक ब्रेस पेयर होता है जिसमें एक स्लैश के नेतृत्व में एक पाठ होता है, नीचे दिए गए :/<text>
सिंटैक्स के समान होता है, यह सबसे कम उम्र की मिलान प्रतिबद्धता लौटाता है, जो <rev>
से पहले पहुंच से बाहर है। ^