कैरेट (^) वर्ण का क्या अर्थ है?


124

मैंने यहाँ एक प्रश्न का उत्तर देखा जो git में हटाई गई फ़ाइल को पुनर्स्थापित करने में मदद करता है।

समाधान था

git checkout <deleting_commit>^ -- <deleted_file_path>

कैरेट कैरेक्टर ( ^) क्या करता है? मैंने इसे अन्यत्र बहुत उपयोगी चीजों को करने के लिए देखा है। यह जादुई है। कृपया कोई इसे मेरे लिए खराब करे और मुझे बताए कि यह क्या करता है?


8
खिड़कियों पर FYI करें: ^ डॉस शेल में अपेक्षित रूप से काम नहीं करता है। गिट बैश शेल का उपयोग करें और फिर यह काम करता है।
सिनसिनाटी जो

5
यह तब भी मेरे साथ नहीं हुआ जब मैंने इसका उपयोग करने का प्रयास किया (इसका अर्थ क्या है)। ^Cmd.exe में कैरेट ( ) एस्केप कैरेक्टर है। हर बार मैंने यह देखने के लिए इसका उपयोग करने की कोशिश की है कि क्या यह सहायक होगा मैं वास्तव में कुछ भी नहीं कर रहा था, जो बताता है कि परिणाम कभी अलग क्यों नहीं थे। > _> मूर्ख cmd.exe। आप इसे दोगुना या यह उद्धृत करके यह बच सकते हैं: git log master^^याgit log "master^"
bambams

जवाबों:


138

HEAD^ वर्तमान शाखा की नोक का पहला माता पिता का मतलब है।

याद रखें कि git commits में एक से अधिक माता-पिता हो सकते हैं। HEAD^के लिए छोटा है HEAD^1, और आप HEAD^2उचित रूप में भी संबोधित कर सकते हैं और इसी तरह।

आप किसी भी प्रतिबद्ध के माता-पिता से मिल सकते हैं, न कि सिर्फ HEAD। आप पीढ़ियों के माध्यम से भी वापस जा सकते हैं: उदाहरण के लिए, master~2अस्पष्टता के मामलों में पहले माता-पिता के पक्ष में, मास्टर शाखा की नोक का मतलब है। ये विनिर्देशक मनमाने ढंग से श्रृंखलित जा सकता है, उदाहरण के लिए , topic~3^2। संबंधित उत्तर देखें क्या HEAD^और HEAD~Git में क्या अंतर है ?

पूर्ण विवरण के लिए, "निर्दिष्ट संशोधन" अनुभाग देखें git rev-parse --help


1
लेकिन फिर, रैखिक इतिहास पर, HEAD^^^तीसरी पुरानी प्रतिबद्धता क्यों लौटती है यानी इसके बराबर है HEAD~~~?
वोरैक

1
@Vorac रैखिक इतिहास के लिए, हाँ।
ग्रेग बेकन

21

इसका अर्थ है "जनक"। तो HEAD^इसका अर्थ है "वर्तमान HEAD का जनक"। आप उन्हें एक साथ चेन भी कर सकते हैं: HEAD^^जिसका अर्थ है "वर्तमान एचएएडी के माता-पिता के माता-पिता" (यानी, वर्तमान एचएएडी के दादा-दादी), HEAD^^^जिसका अर्थ है " वर्तमान एचएएडी के माता-पिता के माता-पिता", और इसके बाद।


16

^(कैरट) भी जब इस्तेमाल किया जा सकता पर्वतमाला को निर्दिष्ट

एक कमिट से आने वाले कमिट्स को बाहर करने के लिए, एक उपसर्ग ^ नोटेशन का उपयोग किया जाता है। जैसे ^ r1 r2 का अर्थ है r2 से पहुंच योग्य है, लेकिन r1 से पहुंचने वाले को बाहर करें।

<राजस्व>

उन कमिट्स को शामिल करें जो (अर्थात पूर्वजों के) से उपलब्ध हैं।

^ <राजस्व>

बहिष्कृत करें जो (अर्थात पूर्वजों के) से उपलब्ध हैं।


10

यहाँ एक दृश्य व्याख्या है। मान लीजिए कि आपका इतिहास ऐसा है:

                      master  
  ... <- B <- C <- D
             /
... <- E <- F
              feature

जब फीचर को मास्टर में मिला दिया गया Cथा , तो दो पूर्वजों के साथ बनाया गया था। Git इन पूर्वजों की संख्या बताती है। मेनलाइन आंसर Bको 1 और फीचर आंसर Fको 2 असाइन किया गया है।

इस प्रकार C^1संदर्भित करता है Bऔर C^2करने के लिए संदर्भित करता है FC^के लिए एक उपनाम है C^1

आप केवल कभी उपयोग करेंगे <rev>^3। यदि आपने तीन शाखाओं का विलय किया है।


7

कैरेट एक विशेष प्रतिबद्ध के माता-पिता को संदर्भित करता है। उदाहरण HEAD^के लिए वर्तमान HEAD के माता-पिता को संदर्भित करता है। (भी, HEAD^^दादा दादी को संदर्भित करता है)।


4

कैरेट एक प्रतिबद्ध ऑफसेट (माता-पिता) का प्रतिनिधित्व करता है। इसलिए उदाहरण के लिए, HEAD^"HEAD से एक कमिट" और HEAD^^^"HEAD से तीन कमिट " का मतलब है।



1

ग्रेग बेकन ने एक बढ़िया लिंक दिया, लेकिन यह बहुत घना है। Git परिचयात्मक डॉक्स ऑनलाइन भी संशोधन और सीमा विनिर्देशक पेश करते हैं:

https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection


3
यह लिंक इच्छित स्थान के करीब हो सकता है। git-scm.com/book/en/v2/…
bholben
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.