2010-03-22 3 views
6

कहें कि मेरे पास एक फ़ाइल है: "todo"रेपो से जुड़े गिट में एक फ़ाइल, संशोधन नियंत्रण के तहत, लेकिन किसी विशेष शाखा से जुड़ी नहीं है?

यह ऐसी चीजों की एक सूची है जो मैं इस परियोजना के लिए करना चाहता हूं।

मैं चाहता हूं कि यह फ़ाइल मेरे गिट रेपो से जुड़ी हो।

मैं वहाँ चाहते हैं इस फाइल के विभिन्न संशोधन हो सकता है,

हालांकि, मैं नहीं चाहता कि यह विशेष शाखाओं से संबद्ध करना चाहते। उदाहरण के लिए:

  1. शाखा मास्टर पर।
  2. कुछ बुनियादी टूडू आइटम
  3. शाखा "dev1" बनाएँ
  4. कार्यसूची को सूची
  5. शाखा "dev2" गुरु से अधिक सामग्री जोड़ें।
  6. todo सूची में अधिक सामान जोड़ें
  7. अब, मेरे पास चारों ओर झूठ बोलने वाली टोडो फ़ाइल के विभिन्न संशोधन हैं।

मैं सिर्फ एक "todo" फ़ाइल होना चाहता हूं - क्या यह संभव है? इसका कोई मतलब भी है क्या? क्या मैं किसी भी तरह से दुरुपयोग कर रहा हूँ?

उत्तर

10
के लिए सभी कार्य करने की संस्करणों की सामग्री श्रृंखलाबद्ध देखने

एक और चाल एक स्वतंत्र शाखा का उपयोग करना है, जो आपकी परियोजना के एक उप-भाग में चेक आउट की गई है, क्योंकि जूनियो हैमनो (वर्तमान गिट रखरखाव) गिट के todo के साथ करता है।रसोई की किताब:

$ cd project/ 
$ git branch 
* master 
$ git init META 

अब आप बना सकते हैं अपने META/

$ cd META/ 
$ echo '* Item 1' > todo.org 
$ git add todo.org 
$ git commit -m 'Initial version of TODO file' 
[master (root-commit) 64748ba] Initial version of TODO file 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 todo.org 

में और अन्य फ़ाइलों को "सूची करने के लिए" चलो, भी meta को शाखा का नाम बदलने, और इसे वापस मुख्य भंडार करने के लिए धक्का:

$ git branch -m meta 
$ git push .. meta 

आप शाखा वापस करने के बाद प्रत्येक प्रतिबद्ध पुश करने के लिए याद करना होगा; एक पोस्ट-प्रतिबद्ध हुक स्थापित करने के क्रम में हो सकता है।

META/ अब मुख्य भंडार में एक अनचाहे फ़ाइल के रूप में दिखाई देता है; के स्थानीय स्तर पर यह उपेक्षा करते हैं:

$ cd .. 
$ git status 
# (Shows META/ as untracked) 
$ echo META/ >> .git/info/exclude 

अब आप अपनी इच्छा से शाखाओं स्विच कर सकते हैं, और META/ अछूता-रूप में लंबे समय शाखा आप निश्चित रूप से, एक परस्पर विरोधी पथ शामिल नहीं है का उपयोग करने जा रहे हैं के रूप में रहना होगा।

मुख्य भंडार अब एक अतिरिक्त, पूरी तरह से स्वतंत्र शाखा है, जो और पुश किया जा सकता अपनी परियोजना के किसी अन्य भाग के रूप में खींच लिया शामिल हैं:

$ git branch 
* master 
    meta 
$ gitk --all 

Screenshot

+0

+1! हमेशा सोचा कि यह एक अच्छा सेटअप था, और यह एक कार्यान्वयन है कि इसे कैसे कार्यान्वित किया जाए। – Cascabel

+0

+1, बहुत ही रोचक सेटअप। – VonC

+0

इसके अलावा आपने डिस्कनेक्ट की गई शाखा बनाने का सबसे आसान तरीका भी दिखाया है! – tig

1

एक अलग रेपो का उपयोग करें।

मैं ~/org निर्देशिका रखता हूं जो emacs स्वचालित रूप से गिट में ट्रैक करता है और मेरी मशीनों में सिंक करता है। मेरे सभी टोडो और ऐसे में हैं, लेकिन यह किसी भी विशेष परियोजना से जुड़ा नहीं है। अगर मैं एक विशिष्ट परियोजना से जुड़ा चाहता था, तो मैं ~/org/project.org बनाउंगा।

1

किसी भी समय आप अपनी कार्य करने फ़ाइल को अपडेट करना चाहते हैं, आप कर सकते हैं merge it first

git checkout previousBranch todo 

नोट:

git show myBranch:todo 
: यदि आप मर्ज नहीं है, आप के साथ किसी भी शाखा के लिए एक कार्य करने की सामग्री को देख सकते

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

इस तरह आप कर सकते हैं:

  • कार्यों कि केवल एक ही शाखा में समझ बनाने के
  • एक स्क्रिप्ट सभी शाखा (git branch)
संबंधित मुद्दे