2011-05-11 11 views
9

में एक फ़ाइल को कैसे टैग करें मैं गिट के लिए बहुत नया हूं। मैं वर्तमान में कुछ एक्सेल फाइलों में बदलावों को ट्रैक करने के लिए इसका उपयोग करके परिचित होने की कोशिश कर रहा हूं जिसे मैं कुछ निरंतर गतिविधि ट्रैक करने के लिए बनाए रख रहा हूं। सभी फाइलें एक ही भंडार में हैं। मैं प्रत्येक संस्करण को उनके संस्करणों के साथ अलग से टैग करना चाहता हूं। क्या यह संभव है? अब तक जो मैंने पाया वह संपूर्ण भंडार को टैग करने की क्षमता थी। यदि मैं जो करने की कोशिश कर रहा हूं वह गलत है, तो मुझे सर्वोत्तम अभ्यास पर सलाह दें।जीआईटी

अग्रिम धन्यवाद।

संपादित

जब मैं कर रहा था इस मैं जानबूझ कर एक पिछले टैग हटाया पूरे भंडार टैग किया जा करने के लिए v1.0 के रूप में (के रूप में मैं एकल फ़ाइलों को टैग करने का रास्ता मिल नहीं था)। चूंकि अब मैं फ़ाइल नाम के साथ टैग का नाम रीसेट करना चाहता हूं और जिस तरह से चीजें होनी चाहिए, उससे काफी सहजता से, मैं पिछले टैग (हटाए गए टैग) को हटाने और पुनर्नामित कैसे कर सकता हूं?

+3

'git' टैग करता है। फाइल नहीं क्या आप हमें बता सकते हैं कि आप इन "टैग्स" के साथ क्या करना चाहते हैं? मुझे लगता है कि एक और उचित उत्तर तब संभव होगा। –

उत्तर

3

टैग विशिष्ट करता है कि आप अपने प्रश्न में सुझाव है कि के रूप में के रूप में एक पूरे के रूप भंडार का विरोध करने पर रखा जाता है। कर रही है कि तुम क्या सुझाव दे रहे हैं प्रत्येक के साथ एक एकल फाइल करने के लिए सुनिश्चित करें कि आप केवल प्रतिबद्ध परिवर्तन कर रही है की

एक तरह से प्रतिबद्ध है, तो आप टैग कर सकते हैं कि जैसे के साथ करते हैं। फ़ाइल 1 के v1.0 का प्रतिनिधित्व करने के लिए file1-v1.0

हालांकि आप इन गतिविधियों को टैग करके प्रतिनिधित्व करने की क्या कोशिश कर रहे हैं? यह आपकी प्रक्रिया को बेहतर बनाने के तरीके पर किसी भी सलाह को प्रभावित करेगा।

+0

धन्यवाद। जैसा कि मैंने अपने प्रश्न में कहा था, साथ ही मेरा प्राथमिक हित गिट पर्यावरण के बारे में और जानना है। लेकिन इस विशेष उदाहरण पर मैं जो करने की कोशिश कर रहा हूं वह एक विशिष्ट मील का पत्थर ट्रैक करना है जिसे मैं दस्तावेज़ को बनाए रखने में प्राप्त करना चाहता था। उदाहरण के लिए: जब मैं प्रारंभिक काम करना समाप्त करता हूं तो मैं इसे v1.0 के रूप में टैग करता हूं, जब मैं दूसरों के साथ दस्तावेज़ के माध्यम से जाता हूं और सभी आवश्यक परिवर्तन करता हूं तो मैं इसे v2.0 बनाना चाहता हूं। संक्षेप में यदि मैं एक बना देता हूं v2.0 के रूप में और दूसरी फ़ाइल को v2.0 के रूप में प्रतिबद्ध करें, तो मैं इसे प्राप्त नहीं कर पाऊंगा। वास्तव में दोनों v1.0 –

1

सीधे नहीं, नहीं।

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

फ़ाइलें सब पर से संबंधित हैं, तो आप आम तौर पर उनमें से समूह के विशिष्ट संस्करण को टैग करने के लिए चाहते हैं। यदि वे नहीं हैं, तो भी आप उस समूह में प्रत्येक फ़ाइल के संस्करण के साथ पूरे समूह को टैग कर सकते हैं। प्रति संशोधन एक फ़ाइल में परिवर्तनों को प्रतिबंधित करने से इस प्रक्रिया को प्रबंधित करना आसान हो सकता है।

+0

धन्यवाद होना चाहिए, वास्तव में आपने जो सुझाव दिया है वह आखिरकार मैंने किया है। इसके अलावा मैं एक समय में केवल एक फ़ाइल के आधार पर परिवर्तन कर रहा हूं। –

7

आप केवल एक प्रतिबद्धता टैग कर सकते हैं, उदा। आपके भंडार के इतिहास में एक निश्चित स्नैप शॉट। हालांकि, Git भंडार धब्बे के रूप में फाइल और आप क्या कर सकते एक ब्लॉब के लिए एक नोट जोड़ने के लिए, इस तरह Git नोटों उपयोग करने के लिए है:

$ git ls-tree HEAD 
100644 blob 252f7c7df5bd181536a6c9d0f9c371ce1a5dd042 .gitignore 
100644 blob 8150ada74aba86c983ac3f8f63ab26aaa76fdcb7 README 
100644 blob c4b1ff6dcb2a8e50727df21ced8d2872cd91af79 TODO.txt 

$ git notes add -m "Adding a note to TODO" c4b1ff6dcb2a8e507 
$ git notes show c4b1ff6dcb2a8e507 
Adding a note to TODO 

हालांकि, कि इस नोट (कोई यमक इरादा ध्यान दें :)) केवल इस ब्लॉब से जुड़ा हुआ है, इसलिए जब भी कोई फ़ाइल बदलता है तो नया ब्लॉब बनाया जाएगा (एक और sha1 हैश मान के साथ) और नए ब्लॉब में यह नोट नहीं होगा।

+0

धन्यवाद। –

+0

के बारे में सोचने के लिए वास्तव में कुछ ऐसा था जो आपके अंतिम नोट को ध्यान में रखते हुए (फ़ाइल परिवर्तन के बाद बदलते एसएचए के बारे में): यह मुझे लगता है कि यह * इच्छित व्यवहार है। नहीं? – exhuma

2

आपको वास्तव में अलग-अलग शाखाओं का पता लगाना चाहिए जो विशिष्ट फ़ाइलों में परिवर्तन ट्रैक करते हैं। आप इसके साथ काम करने में सक्षम होना चाहिए। बिना यह फ़ाइल नाम है

8

तकनीकी तौर पर आप एक एकल फाइल की सामग्री को टैग कर सकते हैं। लेकिन ऐसे टैग सीमित उपयोग के हैं। टैग्स को इंगित करने की उम्मीद है, और गैर-काम करने के लिए विशेष टैग बहुत अलग व्यवहार करते हैं (आप चेकआउट को इस तरह के विशेष टैग को गिट नहीं कर सकते हैं)। तो मैं दृढ़ता से सुझाव देता हूं कि गैर-प्रतिबद्ध टैग का कभी भी उपयोग न करें।

जब आप केवल कुछ फाइलों को टैग करना चाहते हैं, तो उनके लिए अलग-अलग रेपो का उपयोग करना बेहतर हो सकता है, या कम से कम विभिन्न शाखाएं, क्योंकि गिट हमेशा इसके संचालन के लिए पूरे पेड़ को देखता है।

आप अभी भी इस तरह के एक विशेष टैग तुम क्या बनाने के लिए जोर देते हैं, तो:

> git ls-tree HEAD 
040000 tree 2c186ad49fa24695512df5e41cb5e6f2d33c119b bar 
100644 blob 409940768f2a684935a7d15a29f96e82c487f439 foo.txt 

> git tag my-bar-tree 2c186ad49fa24695512df5e41cb5e6f2d33c119b 
> git tag my-foo-file 409940768f2a684935a7d15a29f96e82c487f439 
संबंधित मुद्दे