मैंने अभी-अभी खोजा और उपयोग किया है FETCH_HEAD
। मैं एक सर्वर से कुछ सॉफ्टवेयर की एक स्थानीय प्रतिलिपि चाहता था और मैंने किया
git fetch gitserver release_1
gitserver
मेरी मशीन का नाम है जो गिट रिपॉजिटरी को स्टोर करता है।
release_1
सॉफ्टवेयर के एक संस्करण के लिए एक टैग है। मेरे आश्चर्य के लिए, release_1
तब मेरे स्थानीय मशीन पर कहीं नहीं पाया गया था। मुझे टाइप करना था
git tag release_1 FETCH_HEAD
रिमोट रिपॉजिटरी से स्थानीय के लिए कमिट्स (रिलीज़ 1) की टैग की गई श्रृंखला की प्रति को पूरा करना । फ़ेच ने रिमोट टैग पाया था, मेरी स्थानीय मशीन के लिए प्रतिबद्ध की प्रतिलिपि बनाई थी , स्थानीय टैग नहीं बनाया था, लेकिन उसने FETCH_HEAD
कमिट के मूल्य पर सेट कर दिया था , ताकि मैं उसे ढूंढ सकूं और उसका उपयोग कर सकूं। मैं तब FETCH_HEAD
एक स्थानीय टैग बनाता था जो रिमोट पर टैग से मेल खाता था। यह एक व्यावहारिक चित्रण है कि FETCH_HEAD
यह क्या है और इसका उपयोग कैसे किया जा सकता है, और किसी और के लिए उपयोगी हो सकता है यह सोचकर कि जीएटी भ्रूण ऐसा क्यों नहीं करता है जो आप भोली उम्मीद करेंगे।
मेरी राय में यह उस उद्देश्य के लिए सबसे अच्छा है और जो मैं करने की कोशिश कर रहा था उसे प्राप्त करने का एक बेहतर तरीका है
git fetch gitserver release_1:release_1
रिलीज़ करने के लिए रिलीज़ 1_1 और इसे स्थानीय रूप से रिलीज़ 1 कहा जाता है। (यह स्रोत है: भाग्य, देखें https://git-scm.com/book/en/v2/Git-Internals-The-Refspec ; बस मामले में आप इसे एक अलग नाम देना चाहेंगे!)
आप FETCH_HEAD
कई बार उपयोग करना चाह सकते हैं : -
git fetch gitserver bugfix1234
git cherry-pick FETCH_HEAD
आपके Git सर्वर से बग फिक्स नंबर 1234 का उपयोग करने का एक अच्छा तरीका हो सकता है, और Git के कचरा संग्रह को छोड़कर सर्वर से कॉपी का निपटान करने के लिए एक बार फिक्स को आपके वर्तमान शाखा पर चेरी-पिक किया गया है। (मैं मान रहा हूँ कि सर्वर पर बग फिक्स के पूरे युक्त एक अच्छा स्वच्छ टैग है!)
git fetch origin master
वास्तव में अपडेट होगाorigin/master
, न कि सिर्फFETCH_HEAD
। देखें stackoverflow.com/a/20967347/6309