GitHub प्रोजेक्ट से कुछ कमिटमेंट कैसे प्राप्त करें


151

मुझे GitHub से Facebook API डाउनलोड करने की आवश्यकता है । आम तौर पर, मैं नवीनतम स्रोत कोड डाउनलोड करने के लिए बस 'डाउनलोड' टैब पर क्लिक करता हूं। इस मामले में, मुझे एक पुरानी प्रतिबद्ध की आवश्यकता है: 91f256424531030454548693c3a6ca49ca3f35a , लेकिन यह पता नहीं है कि उस प्रतिबद्ध से पूरी परियोजना कैसे प्राप्त की जाए ...

क्या कोई मुझे बता सकता है कि यह कैसे करना है?

(BTW, एक मैक पर im। पता है कि अगर कोई फर्क नहीं पड़ता)।


1
कृपया यह भी देखें stackoverflow.com/questions/13636559/… यदि आपको "केवल" "ज़िप्ड-स्नैपशॉट-कोड" की आवश्यकता है।
जीन फोंटेन

जवाबों:


216

सबसे पहले, git का उपयोग करके रिपॉजिटरी को क्लोन करें, जैसे:

git clone git://github.com/facebook/facebook-ios-sdk.git

यह रिपॉजिटरी का पूरा इतिहास डाउनलोड करता है, जिससे आप किसी भी संस्करण पर जा सकते हैं। इसके बाद, नए क्लोन रिपोजिटरी में बदलें:

cd facebook-ios-sdk

... और git checkout <COMMIT>सही प्रतिबद्धता में बदलने के लिए उपयोग करें:

git checkout 91f25642453

यह आपको एक चेतावनी देगा, क्योंकि अब आप एक शाखा पर नहीं हैं, और सीधे एक विशेष संस्करण में बदल गए हैं। (इसे "अलग किया गया राज्य" के रूप में जाना जाता है।) चूंकि ऐसा लगता है जैसे आप केवल इस एसडीके का उपयोग करना चाहते हैं, बल्कि इसे सक्रिय रूप से विकसित करना चाहते हैं, यह कोई ऐसी चीज नहीं है जिसके बारे में आपको चिंता करने की आवश्यकता है, जब तक कि आप इसका पता लगाने में रुचि नहीं लेते। कैसे काम करता है के बारे में अधिक।


4
इस बिंदु पर आप यह भी कर सकते हैं git exportयदि आप केवल फाइलें चाहते हैं।
Xeoncross

1
git checkout -q <commit#>जीआईटी चेकआउट के दौरान चेतावनी देने वाला सन्नाटा।
मानववल गजपति

जब मैं git चेकआउट 441b034635240bc873700473af3e98533e94a0b5 करता हूं, तो यह एक त्रुटि देता है: घातक: संदर्भ एक पेड़ नहीं है: 441b034664240bc873700473af3e98533e94a0b5
ttb

135

मुझे नहीं पता कि यह वहां था जब आपने यह प्रश्न पोस्ट किया था, लेकिन एक प्रतिबद्ध डाउनलोड करने का सबसे अच्छा और आसान तरीका एक रिपॉजिटरी को देखते हुए कमिट टैब पर क्लिक करना है। फिर प्रतिबद्ध नाम पर क्लिक करने के बजाय, इतिहास बटन में इस बिंदु पर रिपॉजिटरी को ब्राउज़ करें पर क्लिक करें <> प्रतीक के साथ प्रतिबद्ध नाम / संदेश के दाईं ओर, और अंत में डाउनलोड ज़िप बटन पर क्लिक करें जो तब आता है जब आप क्लोन या क्लिक करते हैं। डाउनलोड बटन।

मुझे उम्मीद है कि यह आप लोगों की मदद करेगा।


3
यह "खोए हुए कमिट्स" को पुनर्प्राप्त करने का एकमात्र तरीका है जो यह मानते हैं कि गिथब का इतिहास है, लेकिन "आधिकारिक" गिट टाइमलाइन से मिटा दिए गए थे। इसका उपयोग करके, आप एक कमिट का एक ज़िप स्नैपशॉट प्राप्त कर सकते हैं जिसे गुमनामी में विद्रोह किया गया था, जो एक नई शाखा के लिए प्रतिबद्ध है, उस शाखा को एक मौजूदा रेपो में लाने के लिए, और चेरी-इसे वापस अस्तित्व में लाएं।
अजाक्स

@ अजाक्स यह सच नहीं है। आप अभी भी शा का उपयोग कर सकते हैं git reflog, और फिर अलग किए गए चेकआउट कर सकते हैं
आरोन ब्रेजर

@AaronBrager यकीन है, reflog काम करेगा, अगर आप उसी मशीन पर हैं, जिसमें शुरुआत में कमिटमेंट था। ओपी को पहले से ही कमिटमेंट का पता है, इसलिए उन्हें रिफ्लॉग की जरूरत नहीं होगी और वे सीधे चेकआउट कर सकते हैं। हालाँकि, मैं उन मामलों के बारे में बात कर रहा हूँ जहाँ आपके पास स्थानीय स्तर पर प्रतिबद्ध नहीं है, और यह उन सभी शाखाओं पर नहीं है जो अभी भी सार्वजनिक रेपो में हैं। इन मामलों में, जीथब के पास अभी भी कमिटमेंट का रिकॉर्ड हो सकता है, जिसे आप एक ज़िप के रूप में डाउनलोड कर सकते हैं जो उक्त कमिट को पुनः प्राप्त करने में सक्षम हो।
अजाक्स

@ अजाक्स आह, स्पष्टीकरण के लिए धन्यवाद। एक विकल्प के रूप में, आप GitHub API ( api.github.com/repos/facebook/facebook-ios-sdk/events ) को हिट कर सकते हैं और अनाथ प्रतिबद्ध ( यहां निर्देश ) से एक शाखा बना सकते हैं
आरियर ब्रेजर

बहुत अच्छा। +1 मुझे नहीं पता था कि आप इस तरह से गितुब के रिफ्लॉग को क्वेरी कर सकते हैं!
अजाक्स

27

जिफ में सिवान का जवाब यहाँ छवि विवरण दर्ज करें

1. जीथब में कमिट्स पर क्लिक करें

2. प्रत्येक प्रतिबद्धता के दाईं ओर ब्राउज़ कोड का चयन करें

3. डाउनलोड ज़िप पर क्लिक करें, जो उस समय के कमिट में सोर्स कोड डाउनलोड करेगा


हेलो सुराज क्या आप मुझे बता सकते हैं कि आपने अपनी स्क्रीन का gif कैसे बनाया?
राहुल साटल

किसी भी उपलब्ध टूल का उपयोग करके वीडियो का स्क्रीन रिकॉर्ड करने के लिए क्विक टाइम प्लेयर का उपयोग करें। वीडियो का रूपांतरण किसी भी उपलब्ध टूल का उपयोग करके करें। इसे देखें। @ राहुल सटल
सूरज के थॉमस

1
धन्यवाद @SurajKThomas for gif
सिवान

10

7-अंकों के SHA1 लघु रूप का उपयोग करते हुए कमिट करने के लिए:

काम करने का उदाहरण:

https://github.com/python/cpython/archive/31af650.zip  

विवरण:

 `https://github.com/username/projectname/archive/commitshakey.zip`

यदि आपके पास लंबी हैश कुंजी है 31af650ee25f65794b75d4dfefed6fe4758781c1, तो पहले 7 चार्ट प्राप्त करें 31af650। यह GitHub के लिए डिफ़ॉल्ट है।


8

सबसे आसान तरीका है कि मैंने एक खोई हुई प्रतिबद्धता को पुनर्प्राप्त करने के लिए पाया (जो कि केवल जीथब पर मौजूद है और स्थानीय रूप से मौजूद नहीं है) एक नई शाखा बनाना है जिसमें यह भी शामिल है।

  1. कमिट ओपन (url like: github.com/org/repo/commit/long-commit-sha) करें
  2. शीर्ष दाईं ओर "फ़ाइलें ब्राउज़ करें" पर क्लिक करें
  3. शीर्ष बाईं ओर स्थित ड्रॉपडाउन "ट्री: शॉर्ट-श ..." पर क्लिक करें
  4. एक नए शाखा नाम में टाइप करें
  5. git pull स्थानीय के लिए नीचे नई शाखा

यह उत्तर स्वीकृत की तुलना में अधिक सामान्य है। मैंने इस स्थिति से मुलाकात की कि मैं जो प्रतिबद्ध चाहता था वह पहले से ही मास्टर शाखा पर गायब हो गया था, और गितुब गैर-मौजूदा शाखाओं पर हर कमिट नहीं रखेगा। तो यह दृष्टिकोण जीथब पर उस प्रतिबद्ध से एक नई शाखा बनाएगा और इसे पुल-सक्षम बना देगा।
क्यूई लुओ

इससे मुझे कमिटेड (मूल SHA अक्षुण्ण के साथ) एक हटाए गए कांटे से पुनर्प्राप्त करने की अनुमति मिली, जो मैंने पीआर से किया था। एक नया कांटा बनाने के बाद, मैंने अपस्ट्रीम रेपो पर पीआर कमेटी को खोला, फिर "फाइल ब्राउज़ करें।" मैंने तब उस URL की प्रतिलिपि बनाई और उपयोगकर्ता नाम को स्वयं से बदल दिया। फिर ट्री पर क्लिक किया: ड्रॉपडाउन और मेरे कांटे में एक नई शाखा बनाई। बढ़िया काम किया!
एलन लूस

2

प्रश्न शीर्षक अस्पष्ट है।

  • यदि आपको एक कमिटमेंट प्राप्त करने की आवश्यकता है, तो बस इस URL का उपयोग करें: https://github.com/facebook/facebook-ios-sdk/commit/91f256424531030454548693c3a6ca49ca3freea.patch (जैसे प्रश्न के लिए यहां बताएं कि किसी एकल कमिट से डाउनलोड कैसे करें? गिटहब? )
  • अगर आपको अपनी जरूरत के हिसाब से पूरा प्रोजेक्ट डाउनलोड करना है, तो इस URL का उपयोग करें: https://github.com/facebook/facebook-ios-sdk/archive/91f2564245310aa454548693c3a6a49493f35a.zip
  • यदि आपको git revision लॉग की आवश्यकता है, तो रिपॉजिटरी को क्लोन करें और आप जो कमिटमेंट चाहते हैं उसे चेकआउट करें।

1

स्वीकृत उत्तर के अतिरिक्त:

हैश को देखने के लिए आपको सुझाए गए कमांड "गिट चेकआउट हैश " का उपयोग करने की आवश्यकता है , आप उपयोग कर सकते हैं git log। आप की जरूरत पर निर्भर करता है, वहाँ हैव कॉपी / चिपकाने से आसान तरीका है।

आप git log --onelineअधिक संपीड़ित प्रारूप में कई प्रतिबद्ध संदेशों को पढ़ने के लिए उपयोग कर सकते हैं ।

कहते हैं कि आप इसे कम से कम जानकारी और केवल आंशिक रूप से दृश्यमान हैश के साथ आने वाली एक-लाइन सूची को देखते हैं:

hash111 (HEAD -> master, origin/master, origin/HEAD)
hash222 last commit
hash333 I want this one
hash444 did something
....

आप चाहें last commitतो उपयोग कर सकते हैं git checkout master^^आप प्रतिबद्ध देता से पहले मास्टर। तो hash222

यदि आप n-वें अंतिम कमिटमेंट चाहते हैं, तो आप उपयोग कर सकते हैं git checkout master~n। उदाहरण के लिए, का उपयोग git checkout master~2करना आपको प्रतिबद्धता देगा hash333


0

कमिट के माध्यम से नेविगेट करने के बजाय, आप वर्तमान रिवीजन / कमिटमेंट के लिए "पर्मलिंक" प्राप्त करने के लिए yकुंजी ( गिथब हेल्प , कीबोर्ड शॉर्टकट्स ) को भी हिट कर सकते हैं।
यह URL को https://github.com/<user>/<repository>(मास्टर / HEAD) से बदल देगा https://github.com/<user>/<repository>/tree/<commit id>

विशिष्ट प्रतिबद्धताओं को डाउनलोड करने के लिए, आपको उस URL से पृष्ठ को फिर से लोड करना Clone or Downloadहोगा , इसलिए बटन https://github.com/<user>/<repository>/archive/<commit id>.zip नवीनतम के बजाय "स्नैपशॉट" को इंगित करेगा https://github.com/<user>/<repository>/archive/master.zip


0

निम्न आदेश अनुक्रम का प्रयास करें:

$ git fetch origin <copy/past commit sha1 here>
$ git checkout FETCH_HEAD
$ git push origin master

-1

यदि आप किसी निश्चित कमिटमेंट के साथ जाना चाहते हैं या किसी निश्चित कमिट का कोड चाहते हैं तो आप नीचे दिए गए कमांड का उपयोग कर सकते हैं:

git checkout <BRANCH_NAME>
git reset --hard  <commit ID which code you want>
git push --force

उदाहरण:

 git reset --hard fbee9dd 
 git push --force

2
यह खतरनाक है, यह रेपो को क्लोन करने और एक संस्करण की जांच करने के लिए अधिक समझ में आता है
user1767754
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.