Git
शाखाओं में
खोज…
वाक्य - विन्यास
-
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
-
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
-
git branch --unset-upstream [<branchname>]
-
git branch (-m | -M) [<oldbranch>] <newbranch>
-
git branch (-d | -D) [-r] <branchname>…
-
git branch --edit-description [<branchname>]
-
git branch [--color[=<when>] | --no-color] [-r | -a] [--list] [-v [--abbrev=<length> | --no-abbrev]] [--column[=<options>] | --no-column] [(--merged | --no-merged | --contains) [<commit>]] [--sort=<key>] [--points-at <object>] [<pattern>…]
पैरामीटर
पैरामीटर | विवरण |
---|---|
-ड, --डेलीट | एक शाखा हटाएं। शाखा को पूरी तरह से इसकी अपस्ट्रीम शाखा में विलय कर दिया जाना चाहिए, या HEAD यदि कोई अपस्ट्रीम --track या --set-upstream साथ सेट नहीं किया गया था |
डी | शॉर्टकट के लिए शॉर्टकट - --delete --force |
-म, - मोव | किसी शाखा और संबंधित परिशोधन को स्थानांतरित / नाम बदलें |
-म | के लिए शॉर्टकट - --move --force |
-आर, - सुप्रीमो | दूरस्थ ट्रैकिंग शाखाओं को सूचीबद्ध करें या हटाएं (यदि -d के साथ उपयोग किया जाता है) |
-ए, --all | दूरस्थ-ट्रैकिंग शाखाएँ और स्थानीय शाखाएँ दोनों सूचीबद्ध करें |
--सूची | सूची मोड को सक्रिय करें। git branch <pattern> एक शाखा बनाने की कोशिश करेगी, मिलान शाखाओं को सूचीबद्ध करने के लिए git branch --list <pattern> सूची git branch --list <pattern> का उपयोग करें |
--set-नदी के ऊपर | यदि निर्दिष्ट शाखा अभी तक मौजूद नहीं है या यदि --force दिया गया है, तो बिल्कुल --track तरह कार्य करता है। अन्यथा ब्रांच बनाते समय कॉन्फ़िगरेशन को सेट करता है जैसे - ट्रैक, ब्रांच बनाते समय, सिवाय इसके कि जहां ब्रांच पॉइंट नहीं बदले जाते |
टिप्पणियों
प्रत्येक गिट रिपॉजिटरी में एक या अधिक शाखाएँ होती हैं । एक शाखा के लिए एक नामित संदर्भ है HEAD
प्रतिबद्ध का एक अनुक्रम की।
Git repo की एक वर्तमान शाखा है ( git branch
कमांड द्वारा मुद्रित शाखा नामों की सूची में एक *
द्वारा दर्शाया गया है), जब भी आप git commit
कमांड के साथ एक नई कमिट बनाते हैं, तो आपका नया कमेंट वर्तमान शाखा का HEAD
हो जाता है, और पिछला HEAD नई प्रतिबद्धता का जनक बन जाता है।
एक नई शाखा में वही HEAD
होगा जिस शाखा से यह बनाया गया था जब तक कि कुछ नई शाखा के लिए प्रतिबद्ध नहीं है।
लिस्टिंग शाखाओं
Git लिस्टिंग शाखाओं के लिए कई कमांड प्रदान करता है। सभी कमांड git branch
के फ़ंक्शन का उपयोग करते हैं, जो एक निश्चित शाखाओं की एक सूची प्रदान करेगा, जिसके आधार पर विकल्प कमांड लाइन पर रखे जाते हैं। यदि संभव हो तो गिट, इसके बगल में एक स्टार के साथ वर्तमान में चयनित शाखा को इंगित करें।
लक्ष्य | आदेश |
---|---|
स्थानीय शाखाओं की सूची बनाएं | git branch |
स्थानीय शाखाओं को सूचीबद्ध करें | git branch -v |
दूरस्थ और स्थानीय शाखाओं की सूची बनाएं | git branch -a git branch --all git branch -a या git branch --all |
दूरस्थ और स्थानीय शाखाओं की सूची (क्रिया) | git branch -av |
सुदूर शाखाओं की सूची बनाएं | git branch -r |
नवीनतम प्रतिबद्ध के साथ दूरस्थ शाखाओं की सूची बनाएं | git branch -rv |
मर्ज की गई शाखाओं की सूची बनाएं | git branch --merged |
अनमैरिड शाखाओं की सूची बनाएं | git branch --no-merged |
सूची युक्त समितियाँ | git branch --contains [<commit>] |
नोट :
- एक अतिरिक्त
v
to-v
जैसे$ git branch -avv
या$ git branch -vv
अपस्ट्रीम ब्रांच का नाम भी प्रिंट करेगा। - लाल रंग में दिखाई देने वाली शाखाएँ दूरस्थ शाखाएँ हैं
नई शाखाएँ बनाना और जाँचना
नई शाखा बनाने के लिए, वर्तमान शाखा पर रहते हुए, उपयोग करें:
git branch <name>
आम तौर पर, शाखा नाम में रिक्त स्थान नहीं होना चाहिए और यहां सूचीबद्ध अन्य विशिष्टताओं के अधीन है । मौजूदा शाखा में जाने के लिए:
git checkout <name>
एक नई शाखा बनाने और उस पर स्विच करने के लिए:
git checkout -b <name>
वर्तमान शाखा (जिसे HEAD के रूप में भी जाना जाता है) के अंतिम प्रतिबद्ध के अलावा किसी बिंदु पर एक शाखा बनाने के लिए, इनमें से किसी भी कमांड का उपयोग करें:
git branch <name> [<start-point>]
git checkout -b <name> [<start-point>]
<start-point>
कोई भी संशोधन हो सकता है जिसे गिट के लिए जाना जाता है (उदाहरण के लिए एक और शाखा का नाम, SHA, या HEAD या एक टैग नाम जैसे प्रतीकात्मक संदर्भ):
git checkout -b <name> some_other_branch
git checkout -b <name> af295
git checkout -b <name> HEAD~5
git checkout -b <name> v1.0.5
एक दूरस्थ शाखा से एक शाखा बनाने के लिए (डिफ़ॉल्ट <remote_name>
मूल है):
git branch <name> <remote_name>/<branch_name>
git checkout -b <name> <remote_name>/<branch_name>
यदि किसी दिए गए शाखा का नाम केवल एक रिमोट पर पाया जाता है, तो आप बस उपयोग कर सकते हैं
git checkout -b <branch_name>
के बराबर है
git checkout -b <branch_name> <remote_name>/<branch_name>
कभी-कभी आपको अपने हाल के कई कामों को एक नई शाखा में ले जाना पड़ सकता है। यह शाखा और "रोलिंग बैक" द्वारा प्राप्त किया जा सकता है, जैसे:
git branch <new_name>
git reset --hard HEAD~2 # Go back 2 commits, you will lose uncommitted work.
git checkout <new_name>
यहाँ इस तकनीक का एक व्याख्यात्मक विवरण दिया गया है:
Initial state After git branch <new_name> After git reset --hard HEAD~2
newBranch newBranch
↓ ↓
A-B-C-D-E (HEAD) A-B-C-D-E (HEAD) A-B-C-D-E (HEAD)
↑ ↑ ↑
master master master
स्थानीय रूप से एक शाखा हटाएं
$ git branch -d dev
यदि इसके परिवर्तन को दूसरी शाखा के साथ मिला दिया गया है और खो नहीं जाएगा, तो dev
नाम की शाखा हटाता है। यदि dev
शाखा में ऐसे परिवर्तन होते हैं जो अभी तक विलय नहीं किए गए हैं जो खो जाएगा, तो git branch -d
विफल हो जाएगी:
$ git branch -d dev
error: The branch 'dev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev'.
चेतावनी संदेश के अनुसार, आप -D
ध्वज का उपयोग करके शाखा को नष्ट कर सकते हैं (और उस शाखा में किसी भी अप्रिय परिवर्तन को खो सकते हैं):
$ git branch -D dev
दूरस्थ शाखा पर नज़र रखने वाली एक नई शाखा देखें
एक नई शाखा feature
बनाने के तीन तरीके feature
जो दूरस्थ शाखा origin/feature
ट्रैक करते origin/feature
:
-
git checkout --track -b feature origin/feature
, -
git checkout -t origin/feature
, -
git checkout feature
- यह सोचते हैं कोई स्थानीय है कि वहाँfeature
शाखा और वहाँ के साथ केवल एक दूरस्थ हैfeature
शाखा।
दूरस्थ शाखा को ट्रैक करने के लिए अपस्ट्रीम सेट करने के लिए - टाइप करें:
-
git branch --set-upstream-to=<remote>/<branch> <branch>
-
git branch -u <remote>/<branch> <branch>
कहाँ पे:
-
<remote>
हो सकता है:origin
,develop
या उपयोगकर्ता द्वारा बनाया गया, -
<branch>
रिमोट पर नज़र रखने के लिए उपयोगकर्ता की शाखा है।
यह सत्यापित करने के लिए कि आपकी स्थानीय शाखाएँ किस दूरस्थ शाखा को ट्रैक कर रही हैं:
-
git branch -vv
एक शाखा का नाम बदलें
आपके द्वारा जाँच की गई शाखा का नाम बदलें:
git branch -m new_branch_name
दूसरी शाखा का नाम बदलें:
git branch -m branch_you_want_to_rename new_branch_name
एक और शाखा से उसी के साथ वर्तमान कार्य निर्देशिका में एकल फ़ाइल को अधिलेखित करें
चेक आउट फ़ाइल को अभी तक प्रतिबद्ध परिवर्तन आप इस फाइल में किया था ऊपर लिख देगा।
यह कमांड फ़ाइल file.example
(जो निर्देशिका path/to/
में स्थित है) की जाँच करेगी और आपके द्वारा इस फ़ाइल में किए गए किसी भी परिवर्तन को अधिलेखित file.example
।
git checkout some-branch path/to/file
some-branch
कुछ भी हो सकता tree-ish
Git के लिए जाना जाता है (देखें संशोधन चयन और gitrevisions अधिक जानकारी के लिए)
आपको जोड़ना होगा --
पथ से पहले यदि आपकी फ़ाइल किसी फ़ाइल के लिए गलत हो सकती है (वैकल्पिक अन्यथा)। कोई और अधिक विकल्पों के बाद आपूर्ति की जा सकती --
git checkout some-branch -- some-file
दूसरी some-file
इस उदाहरण में एक फ़ाइल है।
दूरस्थ शाखा हटाएं
origin
दूरस्थ रिपॉजिटरी पर एक शाखा को हटाने के लिए, आप Git संस्करण 1.5.0 और नए के लिए उपयोग कर सकते हैं
git push origin :<branchName>
और Git संस्करण 1.7.0 के रूप में, आप एक दूरस्थ शाखा का उपयोग करके हटा सकते हैं
git push origin --delete <branchName>
स्थानीय दूरस्थ ट्रैकिंग शाखा को हटाने के लिए:
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p # Shorter
स्थानीय रूप से एक शाखा को हटाने के लिए। ध्यान दें कि यह शाखा को नष्ट नहीं करेगा यदि इसमें कोई भी परिवर्तन न हो:
git branch -d <branchName>
किसी शाखा को हटाने के लिए, भले ही उसमें अनर्जित परिवर्तन हों:
git branch -D <branchName>
एक अनाथ शाखा बनाएं (अर्थात बिना माता-पिता की शाखा)
git checkout --orphan new-orphan-branch
इस नई शाखा पर किए गए पहले कमिट में कोई माता-पिता नहीं होंगे और यह सभी अन्य शाखाओं से पूरी तरह से डिस्कनेक्ट और कमिट करने के लिए एक नए इतिहास की जड़ होगी।
रिमोट के लिए पुश शाखा
अपनी स्थानीय शाखा पर किए गए कमिट को दूरस्थ रिपॉजिटरी में धकेलने के लिए उपयोग करें।
git push
कमांड दो तर्क लेता है:
- एक दूरस्थ नाम, उदाहरण के लिए,
origin
- एक शाखा का नाम, उदाहरण के लिए,
master
उदाहरण के लिए:
git push <REMOTENAME> <BRANCHNAME>
एक उदाहरण के रूप में, आप अपने स्थानीय परिवर्तनों को अपने ऑनलाइन रिपॉजिटरी में धकेलने के लिए आमतौर पर git push origin master
चलाते हैं।
-u
(शॉर्ट --set-upstream
) पुश के दौरान ट्रैकिंग जानकारी सेट करेगा।
git push -u <REMOTENAME> <BRANCHNAME>
डिफ़ॉल्ट रूप से, git
समान नाम से स्थानीय शाखा को दूरस्थ शाखा में धकेलता है। उदाहरण के लिए, यदि आपके पास एक स्थानीय है जिसे new-feature
कहा जाता है, यदि आप स्थानीय शाखा को धक्का new-feature
तो यह एक दूरस्थ शाखा new-feature
भी बनाएगा। यदि आप दूरस्थ शाखा के लिए एक अलग नाम का उपयोग करना चाहते हैं, तो स्थानीय शाखा के नाम से दूरस्थ नाम को जोड़कर अलग :
:
git push <REMOTENAME> <LOCALBRANCHNAME>:<REMOTEBRANCHNAME>
एक मनमाना प्रतिबद्ध करने के लिए वर्तमान शाखा को स्थानांतरित करें
एक शाखा एक प्रतिबद्ध के लिए सिर्फ एक संकेतक है, इसलिए आप इसे स्वतंत्र रूप से चारों ओर ले जा सकते हैं। इसे बनाने के लिए ताकि शाखा प्रतिबद्ध aabbcc
का उल्लेख कर aabbcc
, कमांड जारी करें
git reset --hard aabbcc
कृपया ध्यान दें कि यह आपकी शाखा की वर्तमान प्रतिबद्धताओं को और इसके पूरे इतिहास को लिख देगा। आप इस आदेश को जारी करके कुछ काम ढीला कर सकते हैं। अगर ऐसा है, तो आप खोए हुए कमानों को पुनर्प्राप्त करने के लिए रिफ्लॉग का उपयोग कर सकते हैं। यह आपके वर्तमान के बजाय एक नई शाखा पर इस कमांड को करने की सलाह दी जा सकती है।
हालाँकि, यह कमांड विशेष रूप से तब उपयोगी हो सकता है जब इस तरह के अन्य बड़े इतिहास संशोधनों को पुन: व्यवस्थित या कर रहा हो।
पिछली शाखा में त्वरित स्विच करें
आप जल्दी से पिछली शाखा का उपयोग करके स्विच कर सकते हैं
git checkout -
शाखाओं में खोजना
उन स्थानीय शाखाओं को सूचीबद्ध करने के लिए जिनमें एक विशिष्ट प्रतिबद्ध या टैग है
git branch --contains <commit>
स्थानीय और दूरस्थ शाखाओं को सूचीबद्ध करने के लिए जिसमें एक विशिष्ट प्रतिबद्ध या टैग होता है
git branch -a --contains <commit>