जवाबों:
git checkout <sha1>
किसी विशेष प्रतिबद्धता की जांच करने के लिए उपयोग करें ।
git log
अब केवल पहला कमिट दिखाता है, क्या मुझे अगले कमिट का पता लग सकता है?
git log --oneline
आउटपुट को एक पाठ फ़ाइल में संदर्भ के लिए चलाना चाहिए और चिपका देना चाहिए (संक्षिप्त शम्स इसे प्रदान करता है जो अद्वितीय होने की गारंटी है)। एक अन्य विकल्प, यदि आपका इतिहास रैखिक है, तो यह पता लगाने के लिए कि पहले कमिट से कितने कमिट हैं master
और उपयोग git checkout master~543
(यदि 543 कमिट हैं), तो git checkout master~542
, आदि
एक विशेष संस्करण में जाने के लिए / आदेशों के बाद कमिट रन करें। HASH-CODE से आप प्राप्त कर सकते हैंgit log --oneline -n 10
git reset --hard HASH-CODE
नोट - विशेष संस्करण / कमिट पर रीसेट करने के बाद git pull --rebase
, आप चला सकते हैं , यदि आप उन सभी कमिटों को वापस लाना चाहते हैं, जिन्हें छोड़ दिया गया है।
reset
ग्राफ़ में किसी विशेष बिंदु को केवल चेकआउट नहीं करता है, यह आपकी वर्तमान में जाँच की गई शाखा को भी स्थानांतरित करेगा
reset
, आपके सभी लंबित परिवर्तन छोड़ दिए जाते हैं।
git pull --rebase
केवल तभी काम करता है जब आपके पास अपने रेपो के लिए रिमोट हो और यह अप टू डेट हो।
आप जैसे उपकरण के साथ परियोजना के इतिहास का एक चित्रमय दृश्य प्राप्त कर सकते हैं gitk
। बस दौडो:
gitk --all
यदि आप एक विशिष्ट शाखा की जांच करना चाहते हैं:
git checkout <branch name>
एक विशिष्ट वचनबद्धता के लिए, शाखा नाम के बजाय SHA1 हैश का उपयोग करें। ( Git सामुदायिक पुस्तक में ट्रीशेस देखें , जो एक अच्छा पढ़ा गया है, अपने पेड़ को नेविगेट करने के अन्य विकल्पों को देखने के लिए।)
git log
विस्तृत या सारांश इतिहास को प्रदर्शित करने के लिए विकल्पों का एक पूरा सेट है।
मैं एक प्रतिबद्ध इतिहास में आगे बढ़ने का एक आसान तरीका नहीं जानता । एक रेखीय इतिहास वाली परियोजनाएं शायद यह सब आम नहीं हैं। एसवीएन या सीवीएस के साथ आपके पास "संशोधन" का विचार गीट में अच्छी तरह से नहीं दिखता है।
एक कमेटी SHA1 कुंजी का उपयोग करके, आप निम्न कार्य कर सकते हैं:
सबसे पहले, एक विशिष्ट फ़ाइल के लिए इच्छित कमिटमेंट खोजें:
git log -n <# commits> <file-name>
यह, आपके आधार पर <# commits>
, एक विशिष्ट फ़ाइल के लिए कमिट की एक सूची उत्पन्न करेगा।
TIP: यदि आप सुनिश्चित नहीं हैं कि आप क्या कमिट कर रहे हैं, तो यह पता लगाने का एक अच्छा तरीका निम्नलिखित कमांड का उपयोग कर रहा है git diff <commit-SHA1>..HEAD <file-name>
:। यह कमांड एक कमिट के मौजूदा वर्जन और एक विशिष्ट फाइल के लिए एक कमिट के पिछले वर्जन के बीच के अंतर को दिखाएगा।
नोट: एक प्रतिबद्ध SHA1 कुंजी स्वरूपित है git log -n
सूचीबद्ध किया गया है:
प्रतिबद्ध
<SHA1 id>
दूसरा, वांछित संस्करण की जाँच करें:
यदि आपको मनचाहा कमिट / वर्जन मिल गया है, तो बस कमांड का उपयोग करें: git checkout <desired-SHA1> <file-name>
यह आपके द्वारा स्टेजिंग क्षेत्र में निर्दिष्ट फ़ाइल के संस्करण को रखेगा। इसे मंचन क्षेत्र से बाहर निकालने के लिए बस कमांड का उपयोग करें:reset HEAD <file-name>
दूरस्थ रिपॉजिटरी को इंगित करने के लिए वापस लौटने के लिए, बस कमांड का उपयोग करें: git checkout HEAD <file-name>
मैं एक ऐसी स्थिति में था, जहां हमारे पास एक मास्टर शाखा है, और फिर 17.0 नामक एक और शाखा है और इस 17.0 के अंदर एक प्रतिबद्ध हैश है "XYZ" नहीं । और ग्राहक को उस XYZ संशोधन तक एक निर्माण दिया जाता है। अब हम एक बग भर में आ गए और उस ग्राहक के लिए हल किया जाना चाहिए। इसलिए हमें उस "xyz" हैश तक उस ग्राहक के लिए अलग शाखा बनाने की आवश्यकता है। तो यहाँ है कि मैंने यह कैसे किया।
पहले मैंने अपने स्थानीय मशीन पर उस ग्राहक के नाम के साथ एक फ़ोल्डर बनाया। ग्राहक का नाम "एएए" है एक बार उस फ़ोल्डर को इस फ़ोल्डर के अंदर कमांड के बाद मुद्दा बनाया जाता है:
एक तरीका यह होगा कि पेटिंग के लिए बनाए गए सभी कमिट बनाए जाएं। प्रारंभिक प्रतिबद्ध जांच करें और फिर पढ़ने के बाद पैच लागू करें।
उपयोग करें git format-patch <initial revision>
और फिर git checkout <initial revision>
। आपको अपने निर्देशक में चार अंकों से शुरू होने वाली फाइलों का ढेर मिलना चाहिए जो पैच हैं।
जब आप अपने संशोधन को पढ़ रहे हों तो बस वही करें git apply <filename>
जो आपको दिखना चाहिए git apply 0001-*
और गिनना चाहिए
।
लेकिन मुझे वास्तव में आश्चर्य है कि आप इसके बजाय पैच को ही क्यों पढ़ना चाहेंगे? कृपया इसे अपनी टिप्पणियों में पोस्ट करें क्योंकि मैं उत्सुक हूं।
गिट मैनुअल मुझे यह भी देता है:
git show next~10:Documentation/README
फ़ाइल दस्तावेज़ीकरण / README की सामग्री को दिखाता है क्योंकि वे शाखा की अगली 10 वीं अंतिम बैठक में वर्तमान थे।
आप एक नज़र भी रख सकते हैं git blame filename
जो आपको एक सूची देता है जहाँ प्रत्येक पंक्ति एक प्रतिबद्ध हैश + लेखक से जुड़ी होती है।
एक विशिष्ट प्रतिबद्ध कोड प्राप्त करने के लिए, आपको उस कमिट के हैश कोड की आवश्यकता है । आप उस हैश कोड को दो तरीकों से प्राप्त कर सकते हैं:
git log
और उस शाखा पर अपने हाल के आवागमन की जांच करें। यह आपको आपके कमिट का हैश कोड और आपके द्वारा कोड करते समय आपके द्वारा लीक किए गए संदेश को दिखाएगा। बस नकल करो और फिर करोgit checkout commit_hash_code
उस कोड पर जाने के बाद, यदि आप उस पर काम करना चाहते हैं और परिवर्तन करना चाहते हैं, तो आपको एक और शाखा बनानी चाहिए git checkout -b <new-branch-name>
, अन्यथा, परिवर्तन बनाए नहीं रखा जाएगा।
git log -n1
। लेकिन जब तकgit checkout
असफल नहीं होता, यह प्रयास की बर्बादी है।