मैं git-worktree के लिए क्या उपयोग करूंगा?


211

मैंने गिट-वर्कट्री पर गितूब की पोस्ट पढ़ी । वे लिखते हैं:

मान लीजिए कि आप किसी शाखा में Git रिपॉजिटरी में काम कर रहे हैं feature, जब उपयोगकर्ता उच्च-अत्यावश्यक बग की रिपोर्ट करता हैmaster । पहले आप एक नई शाखा के साथ एक लिंकिंग वर्किंग ट्री बनाते हैं hotfix, मास्टर के सापेक्ष चेक किया जाता है […] आप बग को ठीक कर सकते हैं, हॉटफिक्स को पुश कर सकते हैं, और पुल अनुरोध बना सकते हैं।

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

दूसरी ओर, गिट-वर्कट्री का उपयोग करने की अपनी सीमाएँ हैं:

उदाहरण के लिए, एक ही शाखा को एक ही समय में दो लिंक्ड वर्किंग ट्री में चेक करने की अनुमति नहीं है, क्योंकि यह एक वर्किंग ट्री में किए गए परिवर्तनों को दूसरे को सिंक से बाहर लाने की अनुमति देगा।

मैं पहले से ही हल की गई समस्या के लिए अधिक जटिल वर्कफ़्लो क्यों चुनूंगा?

क्या ऐसा कुछ है git-worktreeजो पहले से नहीं किया जा सकता है और जो इस पूरी नई, जटिल विशेषता को सही ठहराता है?


12
एक चीज जिसे आप नहीं मार सकते हैं वह है अनमर्जेड पथ, एक मर्ज या रिबेस के बाद संघर्ष।
चिरलू

11
यदि आप संकलित भाषाओं के साथ काम करते हैं, तो स्टैशिंग का मतलब है कि आपको अस्थिर होने पर सब कुछ फिर से भरना होगा।
mb14

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

जवाबों:


196

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

वर्कट्री के साथ, आप उस निरंतर पुन: संयोजन से बच सकते हैं। वर्कट्री का उपयोग करके अलग-अलग फ़ोल्डरों में उन पुरानी शाखाओं की जाँच करें। प्रत्येक शाखा के लिए, आपको एक स्वतंत्र आईडीई परियोजना मिली।

बेशक यह अतीत में कई बार रेपो का क्लोन बनाकर किया जा सकता था और यह अब तक मेरा दृष्टिकोण रहा है। हालांकि, इसका मतलब यह भी है कि कई बार रेपो से समान बदलाव लाने के लिए हार्डवेअर स्पेस को बर्बाद करना पड़ता है।


4
आपको कई बार रेपो से समान परिवर्तन लाने की जरूरत नहीं थी। आप पहले क्लोन की .git निर्देशिका की नकल कर सकते थे।
misiu_mp

1
@ jdk1.0 भ्रम के लिए खेद है, टिप्पणी misiu_mp पर निर्देशित की गई थी
mxttie

2
जैसा कि किसी ने 2-3 उच्च प्रतिकृति वाले रिपोज का उपयोग किया है, इसलिए मैं दूसरे पर विकसित होने के दौरान एक फीचर शाखा का निर्माण कर सकता हूं, मेरे पास प्रत्येक स्थानीय रेपो था, जो दूसरों के रिमोट के रूप में था और मैं सेबी के डाउनसाइड्स (बहुत से लाने और धक्का देने के चरित्र) से पूरी तरह सहमत हूं! ) इसके अलावा, एक बार जब मैं वर्कट्री पर स्विच करता हूं, तो मैं इकट्ठा करता हूं कि मुझे अब स्थानीय, समान-नामित शाखाओं को बदलने की चिंता नहीं करनी होगी (जो हर 6-10 महीने में एक बार होता है, क्योंकि मुझे कई दिनों की अवधि में कई बार बाधित होता है और समाप्त होता है कई रिपॉजिट से बाहर एक ही फीचर ब्रांच का काम करना, लेकिन उन्हें वापस सिंक करना न भूलें ...)
ऋषि

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

5
@ जिहानी - (2) समय के साथ, हर चीज का इतिहास किसी भी बिंदु पर काम कर रहे पेड़ की फाइलों की तुलना में बहुत बड़ा हो जाएगा। सब कुछ का इतिहास == .gitनिर्देशिका। अपस्ट्रीम से कई स्थानीय क्लोन के साथ, आपके पास एक ही डेटाबेस की कई स्थानीय प्रतियां हैं, क्योंकि प्रत्येक क्लोन का अपना .gitडेटाबेस होता है। कई स्थानीय कामकाजी पेड़ों के साथ, प्रत्येक पेड़ एक ही .gitडेटाबेस का उपयोग करता है । हां, यदि आपके पास अपने स्थानीय कार्यक्षेत्र के स्थानीय क्लोन हैं, तो Git हार्ड-लिंक सामग्री को बहुत कड़ी-कड़ी देगा, लेकिन विंडोज के लिए नहीं।
स्टीव होलास्च

70

मैं इसके लिए कुछ उपयोग देख सकता हूं।

यदि आपके पास एक परीक्षण सूट है जो लंबे समय तक चलता है, तो घंटों की कल्पना करें, और आप इसे शुरू करते हैं यह प्रभावी रूप से ब्लॉक करता है जो परीक्षण पूरा होने तक काम कर रहा है। उन परीक्षणों के दौरान शाखाओं को बदलना उन तरीकों से तोड़ देगा जिन्हें समझना मुश्किल होगा।

के साथ git-worktree मैं एक दूसरी शाखा के साथ काम करने के लिए एक दूसरा विचार ला सकता था।

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

तीसरा उपयोग मामला दो निर्देशिकाओं के बजाय git-diffसामान्य की तुलना में अन्य उपकरणों का उपयोग करके फ़ाइल तुलना करने के लिए होगा diff, अगर दो शाखाओं के बजाय।


6
git cloneसिर्फ इन सभी के लिए काम नहीं करेगा ?
jthill

12
लेकिन यह रिमोट से एक बड़ी रिपॉजिटरी को क्लोन करने में लंबा समय ले सकता है। मैं एक रिपॉजिटरी के खिलाफ काम कर रहा हूं जिसमें क्लोन करने में कई मिनट लगते हैं। मुझे लगता है कि आप इसे कर सकते हैं git clone --reference। साथ ही, सभी अन्य शाखाओं का प्रबंधन कार्यशील निर्देशिका के अनुसार एक बार के बजाय सिर्फ एक बार किया जाएगा।
एंड्रियास वेलेब्रांड

6
रिमोट से क्लोन न करें, अपने स्थानीय से क्लोन करें। मैं शाखा-प्रबंधन के मुद्दे को नहीं समझता, क्या आप स्पष्ट कर सकते हैं?
jthill

14
मैंने क्लोन का उपयोग करने की कोशिश की, और वास्तव में एक प्रबंधन मुद्दा है। शाखाओं के एकल सेट के बजाय मेरे पास क्लोन का एक सेट है, जिसे मैं एकल UI में एक साथ नहीं देख सकता। अगर मुझे कुछ बदलाव करने की ज़रूरत है, तो मुझे उन्हें लाना होगा या उन्हें इधर-उधर करना होगा। यह सभी कार्यों के लिए अतिरिक्त कदम जोड़ता है। सब कुछ करने योग्य है, लेकिन हमेशा कुछ घर्षण होता है।
अधिकतम

2
और जब बैकअप स्थापित करने की बात आती है, तो एकल रिपॉजिटरी इतना आसान है।
अधिकतम

64

एक स्पष्ट उपयोग एक साथ व्यवहार की तुलना करना है विभिन्न संस्करणों (स्रोत नहीं) की - उदाहरण के लिए एक वेब साइट के विभिन्न संस्करणों या सिर्फ एक वेब पेज।

मैंने स्थानीय स्तर पर इसकी कोशिश की।

  • एक निर्देशिका बनाएँ page1

  • अंदर निर्देशिका srcऔर git initयह बनाएँ ।

  • में srcबनाने के page1.htmlएक छोटे से सामग्री के साथ और यह करते हैं।

  • $ git branch ver0

  • $ git worktree add ../V0 ver0

  • में srcमास्टर के लिए और अधिक पाठ जोड़ने page1.htmlऔर इसे करते हैं।

  • $ git branch sty1

  • शाखा page1.htmlमें संपादित करें sty1(कुछ विशिष्ट सीएसएस शैली जोड़ें) और इसे जोड़ें।

  • $ git worktree add ../S1 sty1

अब आप इन 3 संस्करणों को एक साथ खोलने और देखने के लिए वेब ब्राउज़र का उपयोग कर सकते हैं:

  • ..\page1\src\page1.html // जो कुछ भी वर्तमान के रूप में है

  • ..\page1\V0\page1.html // प्रारंभिक संस्करण

  • ..\page1\S1\page1.html // प्रयोगात्मक स्टाइल संस्करण


2
मैं यह नहीं देखता कि यह क्लोन के ऊपर इस उद्देश्य के लिए वर्कट्री का उपयोग करने का लाभ कैसे बताता है।
इहानी

@ जिहनी आप के बारे में भी यही कह सकते हैं branch; जवाब भी वही है: यह हल्का वजन है, और नौकरी के लिए बनाया गया है।
OJFord

1
@OJFord कि बात थोड़े है। यह उत्तर मुझे यह नहीं समझाता है कि वर्कट्री क्या अलग है। यह स्पष्ट रूप से शाखा या क्लोन के लिए एक उपनाम नहीं है, लेकिन मैं यहां जो प्रभाव देख रहा हूं, वह ऐसा ही प्रतीत होता है। मैं यह नहीं देखता कि यह केवल शाखा या क्लोन का उपयोग करने की तुलना में कोई हल्का वजन कैसे है।
इहानी

@ जिनेनी यह शाखा का उपयोग करने से अलग है - आप एक ही समय में कार्यस्थल के कई राज्यों को प्राप्त करने के लिए अकेले शाखाओं का उपयोग नहीं कर सकते हैं - और एक सेकंड (.., nth) क्लोन की तुलना में हल्का वजन। मेरे कहने का मतलब यह था कि आप शाखा के बारे में भी कह सकते हैं कि 'सिर्फ क्लोन ही क्यों और अपने परिवर्तन कैसे करें', लेकिन एक ही रेपो में कई शाखाएं एक हल्का वजन और अधिक आसानी से उस व्यवहार को प्राप्त करने का तरीका है।
OJFord

@OJFord मुझे नहीं लगता कि इससे वर्कट्री के साथ मेरा भ्रम दूर होता है। मुझे इसे इस तरह से रखना है, चाहे आप शाखा या क्लोन या कुछ और का उपयोग करें, यहाँ वर्णित प्रक्रिया का अंतिम लक्ष्य किसी चीज़ के तीन अलग-अलग संस्करणों की तुलना करना है। उत्तर में क्या है, इसके आधार पर, मुझे समझ में नहीं आता है कि मैं किसी विकल्प पर वर्कट्री का उपयोग क्यों करूंगा। उत्तर यह नहीं बताता है कि वर्कट्री क्या कर रही है जो विकल्प नहीं हैं। आप किसी चीज़ के हल्के होने (या हल्के वजन) के बारे में दावा करते हैं, लेकिन मैं यह नहीं देखता कि वर्कट्री कैसे शाखाओं को "कम वजनदार" बनाती है।
इहानी

29
  1. वैध कारण हैं कि आप एक साथ फाइल सिस्टम में एक से अधिक कार्यस्थलों की आवश्यकता / आवश्यकता कर सकते हैं।

    • कहीं और परिवर्तन करने की आवश्यकता के दौरान जाँच की गई फ़ाइलों में हेरफेर करना (जैसे। संकलन / परीक्षण)

    • सामान्य डिफरेंशियल टूल्स के जरिए फाइलों को अलग करना

    • मर्ज संघर्षों के दौरान, मैं अक्सर स्रोत कोड के माध्यम से नेविगेट करना चाहता हूं क्योंकि यह फाइलों में संघर्षों को हल करते समय स्रोत की तरफ है ।

    • यदि आपको बहुत आगे और पीछे स्विच करने की आवश्यकता है, तो समय-समय पर चेकआउट को बर्बाद कर दिया जाता है और आपको कई वर्कट्रीज़ के साथ करने की आवश्यकता नहीं होती है।

    • गिट स्टैशिंग के माध्यम से शाखाओं के बीच स्विच करने वाले मानसिक संदर्भ की वास्तविक लागत वास्तव में औसत दर्जे का नहीं है। कुछ लोगों को पता चलता है कि एक अलग निर्देशिका से फाइल खोलने से वहाँ चोरी करने की मानसिक लागत होती है।

  2. कुछ लोग पूछते हैं "क्यों कई स्थानीय क्लोन नहीं करते हैं"। यह सच है कि "--local" झंडे के साथ आपको अतिरिक्त डिस्क स्थान उपयोग के बारे में चिंता करने की आवश्यकता नहीं है। यह (या समान विचार) मैंने इस बिंदु पर क्या किया है। स्थानीय क्लोनों से जुड़े कार्यक्षेत्रों के कार्यात्मक लाभ हैं:

    1. स्थानीय क्लोन के साथ, आपके अतिरिक्त वर्कट्रीज़ (जो स्थानीय क्लोन में हैं) बस मूल या नदी के ऊपर की शाखाओं तक पहुंच नहीं रखते हैं। क्लोन में 'मूल' पहले क्लोन में 'मूल' के समान नहीं होगा।

      • दौड़ना git log @{u}..या git diff origin/feature/other-featureबहुत मददगार हो सकता है और ये या तो अब संभव नहीं हैं या अधिक कठिन हैं। ये विचार तकनीकी रूप से वर्कऑन के वर्गीकरण के माध्यम से स्थानीय क्लोन के साथ संभव हैं, लेकिन आपके द्वारा किए जाने वाले प्रत्येक वर्कअराउंड को बेहतर और / या लिंक किए गए वर्कट्रीज़ के माध्यम से सरल किया जा सकता है।
    2. आप वर्कट्रीज़ के बीच रेफरी साझा कर सकते हैं। यदि आप किसी अन्य स्थानीय शाखा से परिवर्तनों की तुलना या उधार लेना चाहते हैं, तो अब आप कर सकते हैं।


11
इसके अलावा, आप सभी कार्यपत्रकों को एक ही आदेश के साथ सूचीबद्ध कर सकते हैं, क्लोन के साथ आपको उन्हें स्वयं ट्रैक करने की आवश्यकता है।
इयान रिंगरोज

हम्म। गिट के रूप में 2.7.0 कि मामला लगता है। जानकर अच्छा लगा।
अलेक्जेंडर बर्ड

9

tl; dr: किसी भी समय आप जिस भी कार्य के लिए एक ही समय में दो कार्य वृक्षों की जाँच करना चाहते हैं, git-worktree एक त्वरित और स्थान-कुशल तरीका है।

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


2
डॉक्स का कहना है कि आपके पास दोनों कार्यकारी प्रतियों में एक ही शाखा नहीं हो सकती है, जो एक गंभीर सीमा है। मर्क्यूरियल के साथ, यह केवल छोटे मुद्दों के साथ काम करता था।
hypersw

जरूर आप कर सकते हो। मैन पेज कहता है कि कैसे; के लिए देखो --force। लेकिन यह असुविधाजनक है यदि आप एक स्थान पर शाखा को अपडेट करते हैं और उस पर दूसरे में काम करने की उम्मीद करते हैं, क्योंकि कार्यस्थल अपडेट नहीं है।
jsageryd

हां, मर्क्यूरियल में शाखाएं इस पहलू में एक अधिक पारदर्शी अवधारणा हैं। एक वर्कट्री से दूसरे में शाखाएं कैसे दिखाई देती हैं? एकाधिक अपलिंक के समान तरीका? दोनों में चल रहा है, दोनों के साथ काम कर रहे पेड़ों के साथ मेरा पहला प्रयोग, नाम के दो (!) अलग-अलग (!) के साथ समाप्त हुआ origin/master
हाइपर्सव

एक वर्कट्री है (जैसा कि नाम से पता चलता है) सिर्फ एक वर्कट्री है, जिसमें कुछ अतिरिक्त जोड़े गए फीचर हैं; रिपॉजिटरी सभी वर्कट्रीज़ के बीच साझा की जाती है। दो कार्यपत्रों के बीच एकमात्र अंतर यह है कि चेक-आउट शाखा (और समझदार वर्कफ़्लोज़ के लिए) भिन्न हो सकती है। एक अलग कार्यक्षेत्र में प्रतिबद्ध होना संभव है, इसलिए उस काम को करने के लिए इसका अपना सूचकांक (उर्फ स्टेजिंग क्षेत्र) भी है। .gitअलग worktree में फ़ाइल को पाठ इसके विन्यास, जो मूल भंडार में रहता है के लिए पथ युक्त फ़ाइल है।
jsageryd

2
@WilsonF: git checkout --ignore-other-worktrees <branch> git-scm.com/docs/git-checkout/…
jsageryd

7

मैं मूल रूप से इस सवाल पर अचंभित था कि इन फैंसी वर्कट्रीज़ का क्या उपयोग किया जा सकता है। तब से मैंने उन्हें अपने वर्कफ़्लो में एकीकृत कर लिया है और अपनी आरंभिक शंका के बावजूद मैं उन्हें काफी उपयोगी मानने लगा हूँ।

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

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


4

मुझे एक असामान्य रूप से एक मिल गया है: मैं एक ही मशीन पर विंडोज और लिनक्स विकास कर रहा हूं । मेरे पास मेरे विंडोज बॉक्स के अंदर एक वर्चुअलबॉक्स चलने वाला लिनक्स है। वर्चुअलबॉक्स कुछ विंडोज निर्देशिकाओं को मापता है और उन्हें सीधे लिनक्स मशीन के अंदर उपयोग करता है। यह मुझे फ़ाइलों के प्रबंधन के लिए विंडोज का उपयोग करने देता है लेकिन लिनक्स के भीतर निर्माण करता है। यह एक क्रॉस-प्लेटफॉर्म प्रोजेक्ट है, इसलिए यह एक ही डायरेक्टरी स्ट्रक्चर से विंडोज और लिनक्स दोनों पर बनाता है।

समस्या यह है कि एक ही निर्देशिका में उपयोग किए जाने पर लिनक्स और विंडोज बिल्ड सिस्टम एक-दूसरे में क्रैश हो जाते हैं; पुस्तकालयों आदि को डाउनलोड करने के लिए कुछ जटिल निर्माण चरण हैं, जो समान निर्देशिका नामों का उपयोग करते हैं। बिल्ड सिस्टम का विंडोज संस्करण विंडोज-विशिष्ट पुस्तकालयों को डाउनलोड करता है, और निर्माण प्रणाली का लिनक्स संस्करण लिनक्स-विशिष्ट पुस्तकालयों को डाउनलोड करता है।

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

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


+1 ऐसा लगता है कि मेक-अप-कॉन्फ़िगरेशन बिल्ड आउटपुट निर्देशिकाओं को मूल रूप से नहीं करने के लिए एक बहुत प्रभावी समाधान है। मेरे पास Ubuntu और macOS मेहमानों के साथ एक समान VMware वर्कस्टेशन सेटअप है।
तंज87

1

मेरे लिए नए प्रोजेक्ट में, मैंने एक फीचर बनाया है। लेकिन कुछ चश्मा फेल हो गया। masterमैं एक work-treeरेपो बनाया के साथ परिणामों की तुलना करने के लिए । मैंने रन कोड में चरण दर चरण परिणामों की तुलना की, जब तक कि समझ में नहीं आया कि क्या गलत हुआ।


हालांकि, एक वर्कट्री इसे किसी क्लोन से आसान कैसे बनाती है, हालांकि? सवाल व्यक्तिगत प्राथमिकता के लिए नहीं पूछ रहा है, लेकिन ठोस अंतर।
IInspectable

1

मैं उपयोग कर रहा हूँ git worktree मशीन लर्निंग डेवलपमेंट के लिए ।

मेरे पास एक मुख्य कार्यात्मक कोड है और फिर मैं विभिन्न प्रयोगों (अलग-अलग एल्गोरिदम और अलग-अलग हाइपरपरमेटर्स) की शाखाओं को विभाजित करना चाहता हूं। git worktreeमुझे अपने कोड के विभिन्न संस्करणों के साथ-साथ विभिन्न एल्गोरिदम के लिए डीवीसी को एकीकृत करने की अनुमति देता है। सभी प्रशिक्षण नौकरियों को चलाने के बाद मैं अंतिम मैट्रिक्स का मूल्यांकन करता हूं और सर्वश्रेष्ठ शाखा / मॉडल में मास्टर करने के लिए विलय करता हूं।

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