जवाबों:
आप एक हैश के माध्यम से शाखा बना सकते हैं:
git branch branchname <sha1-of-commit>
या एक प्रतीकात्मक संदर्भ का उपयोग करके:
git branch branchname HEAD~3
इसे बनाते समय शाखा की जांच करना
git checkout -b branchname <sha1-of-commit or HEAD~3>
git push origin BRANCH_NAME
<sha1-of-commit>
रन से एक शाखा शुरू करने के लिए, git checkout -b <name-of-branch> <sha1-of-commit>
लेकिन यदि शाखा पहले से मौजूद हैgit checkout -B <name-of-branch> <sha1-of-commit>
Github.com पर ऐसा करने के लिए:
जादू को रीसेट करके किया जा सकता है ।
एक नई शाखा बनाएं और इसे स्विच करें (इसलिए आपके सभी नवीनतम आवागमन यहां संग्रहीत हैं)
git checkout -b your_new_branch
अपनी पिछली कार्य शाखा में वापस जाएं (मान लें कि यह मास्टर है)
git checkout master
नवीनतम एक्स कमिट्स निकालें, मास्टर को साफ रखें
git reset --hard HEAD~x # in your case, x = 3
इस क्षण से, सभी नवीनतम एक्स कमिट केवल नई शाखा में हैं, आपकी पिछली कार्य शाखा (मास्टर) में नहीं।
git reset --hard
यह एक अच्छा विचार नहीं है यदि आप पहले से ही उत्पत्ति के लिए प्रतिबद्ध हैं ...
git push --force
यदि आप पहले से ही शाखा धक्का दिया था
यदि आप सुनिश्चित नहीं हैं कि आप पहले से किस शाखा में जाना चाहते हैं, तो आप कमिट की जाँच कर सकते हैं और उनके कोड की जांच कर सकते हैं (देखें स्रोत, संकलन, परीक्षण)
git checkout <sha1-of-commit>
एक बार जब आप पाते हैं कि आप से शाखा करना चाहते हैं, तो कमिट के भीतर (यानी पहले मास्टर के पास वापस जाने के बिना) सामान्य तरीके से एक शाखा बनाकर कर सकते हैं:
git checkout -b <branch_name>
git checkout -b <branch-name> <sha1-of-commit>
git branch branchname <sha1-of-commit>
" (स्वीकृत उत्तर से) कैसे भिन्न है ?
git checkout -b
एक नई शाखा बनाने के लिए उपयोग करता हूं ।
अपने गितुब रेपो पर इसे करने का एक त्वरित तरीका निम्नानुसार होगा:
बस चलाते हैं:
git checkout -b branch-name <commit>
उदाहरण के लिए :
git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8
checkout
पैरामीटर के साथ कमांड -b
एक नई शाखा का निर्माण करेगा और यह यह करने के लिए आप में परिवर्तित कर देगा
git fetch
और git branch
कमांड करें, फिर देखें कि क्या सुविधा शाखा मौजूद है, यदि यह मामला है, तो हाँ, निश्चित रूप से आप नष्ट शाखाओं से एक शाखा बनाने में सक्षम नहीं होंगे, आप मामले में एक शाखा हटाने को भी वापस कर सकते हैं। शाखा चला गया है
एक महान संबंधित प्रश्न है: कैसे आप इस --help
विकल्प का उपयोग कर समझाना है? चलो यह करके देखें:
git branch --help
हम यह आउटपुट देखते हैं:
NAME
git-branch - List, create, or delete branches
SYNOPSIS
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>...]
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>]
Gobbledegook।
"प्रतिबद्ध" शब्द के लिए बाद के पाठ के माध्यम से खोजें। हम यह पाते हैं:
<start-point>
The new branch head will point to this commit. It may be given as a branch name, a
commit-id, or a tag. If this option is omitted, the current HEAD will be used instead.
हम कहीं जा रहे हैं!
अब, gobbledegook की इस पंक्ति पर ध्यान दें:
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
इस के लिए संघनक:
git branch <branchname> [<start-point>]
और हो गया।
ग्रहण में ऐसा करने के लिए:
यह आपके लिए एक स्थानीय शाखा बनाएगा। फिर जब भी आप अपने परिवर्तनों को आगे बढ़ाते हैं, तो आपकी शाखा को दूरस्थ सर्वर पर धकेल दिया जाएगा।
आप इसे Stash में कर सकते हैं।
मैं ऐसा करने में सक्षम था:
git branch new_branch_name `git log -n 1 --skip 3 --format=%H`
जहाँ आपको स्किप वैल्यू डालना होगा। 0 नवीनतम है, 1 पिछला है, 2 उससे पहले की प्रतिबद्धता है, आदि।
HEAD~1
(जहां 1 निर्दिष्ट 1 कमिट वापस)?
यह एक आदेश के साथ शाखा बनाता है:
git push origin <sha1-of-commit>:refs/heads/<branch-name>
मैं ऊपर प्रकाशित लोगों की तुलना में इस तरह से बेहतर पसंद करता हूं, क्योंकि यह तुरंत शाखा बनाता है (बाद में अतिरिक्त पुश कमांड की आवश्यकता नहीं होती है)।
Sourcetree का उपयोग करना | सबसे आसान तरीका।
यह जो मैंने किया है:
C:\Users\[path]\build>git checkout -b responsivenavigation 8a75b001096536b3216022484af3026aa9c7bb5b
Switched to a new branch 'responsivenavigation'
C:\Users\jaimemontoya\Dropbox\CuponClub\androidapp\build>git branch
master
* responsivenavigation
इस मामले में, शाखा 8a75b001096536b3216022484af3026aa9c7bb5b
से संबंधित और पुरानी प्रतिबद्धता थी master
।
गिट रिपॉजिटरी के किसी विशेष कमिट पर जाएं
कभी-कभी एक गिट रिपॉजिटरी पर काम करते समय आप एक विशिष्ट समय पर अपनी परियोजना का स्नैपशॉट लेने के लिए एक विशिष्ट प्रतिबद्ध (संशोधन) पर वापस जाना चाहते हैं। यह करने के लिए कि आपको कमिटमेंट का SHA-1 हैश चाहिए, जिसे आप आसानी से कमांड के साथ लॉग चेक कर सकते हैं:
git log --abbrev-commit --pretty=oneline
जो आपको सभी आवागमन और SHA-1 हैश के लघु संस्करण की एक कॉम्पैक्ट सूची देगा।
अब जब आप जानते हैं कि आप जिस कमिटमेंट में जाना चाहते हैं उसका हैश निम्न 2 कमांडों में से एक का उपयोग कर सकता है:
git checkout HASH
या
git reset --hard HASH
चेक आउट
git checkout <commit> <paths>
दिए गए कमिट में अपने राज्य के साथ रास्तों की वर्तमान स्थिति को बदलने के लिए गिट बताता है। पथ फ़ाइल या निर्देशिका हो सकते हैं।
यदि कोई शाखा नहीं दी जाती है, तो जीआईएटी हेड कमिट करता है।
git checkout <path> // restores path from your last commit. It is a 'filesystem-undo'.
यदि कोई रास्ता नहीं दिया गया है, HEAD
तो दिए गए कमिट में कदम रखें (जिससे आप बैठे हैं और काम कर रहे हैं) को बदल दें।
git checkout branch //means switching branches.
रीसेट
git reset <commit> //re-sets the current pointer to the given commit.
यदि आप एक शाखा पर हैं (आप आमतौर पर होना चाहिए), HEAD
और इस शाखा को प्रतिबद्ध करने के लिए ले जाया जाता है।
यदि आप अलग HEAD
स्थिति में हैं, तो git रीसेट केवल चलता है HEAD
। शाखा को रीसेट करने के लिए, पहले इसे देखें।
यदि आप git रीसेट और git चेकआउट के बीच अंतर के बारे में अधिक जानना चाहते हैं तो मैं आधिकारिक git ब्लॉग पढ़ने की सलाह दूंगा ।
git log --abbrev-commit --pretty=oneline
संक्षिप्त किया जा सकता हैgit log --oneline
जीयूआई जीयूआई उपयोगकर्ताओं के लिए आप सभी इतिहास (यदि आवश्यक हो) की कल्पना कर सकते हैं और फिर उस शाखा पर राइट क्लिक कर सकते हैं जहां से आप शाखा का नाम दर्ज करना चाहते हैं।
विजुअल स्टूडियो 2015 और 2017 में स्वीकृत उत्तर देने के लिए:
परिवर्तन में क्लिक करें (ऊपर लाल तीर)
क्रिया में क्लिक करें (ऊपर लाल तीर) और ड्रॉपडाउन मेनू पर इतिहास देखें पर क्लिक करें
और नया टैब खुलेगा:
और आपको पिछली कमेट पर राइट क्लिक करना चाहिए जो आप चाहते हैं कि आपका कोड वापस लौट जाए:
एक नई शाखा और वॉयला चेकआउट करने के लिए चुनें!
नीचे, हालांकि ओपी प्रश्न का हिस्सा नहीं है, लेकिन मैं दोनों बहुत कुछ करता हूं और यह एक ट्रिक स्टेप है, कम से कम मेरे लिए: यदि आप एक नई शाखा को चेकआउट किए बिना, एक पिछली प्रतिबद्ध वापस करना चाहते हैं, तो वापस मत चुनें ( ?); आपको नए सिरे से परिभाषित या निर्धारित करना चाहिए:
यदि आप स्रोत पेड़ का उपयोग करते हैं जो बहुत सीधे आगे है।
यदि आप कमांड-लाइन आधारित समाधान की तलाश कर रहे हैं, तो आप मेरे उत्तर को अनदेखा कर सकते हैं। मैं आपको GitKraken का उपयोग करने का सुझाव देने वाला हूं । यह एक असाधारण git UI क्लाइंट है। यह होमपेज पर Git ट्री दिखाता है। आप बस उन्हें देख सकते हैं और जान सकते हैं कि परियोजना के साथ क्या हो रहा है। बस एक विशिष्ट प्रतिबद्ध का चयन करें, उस पर राइट-क्लिक करें और 'यहां एक शाखा बनाएं' विकल्प चुनें। यह आपको शाखा नाम दर्ज करने के लिए एक पाठ बॉक्स देगा। शाखा का नाम दर्ज करें, 'ठीक' चुनें और आप सेट हैं। यह वास्तव में उपयोग करने के लिए बहुत आसान है।