2010-01-12 17 views
112

मेरे पास कई शाखाओं के साथ एक परियोजना है।गिट एक साथ दो शाखाओं पर काम कर रहा है

मैं पर git checkout के साथ आगे और पीछे स्विच किए बिना कई शाखाओं पर काम करना चाहता हूं।

क्या कोई और तरीका है जो मैं पूरी रिपोजिटरी को कहीं और कॉपी करने के अलावा कर सकता हूं?

+0

[गिट के साथ एकाधिक कार्यशील निर्देशिकाएं] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/6270193/multiple-working-directories-with-git) – meagar

+1

गिट 2.5+ (क्यू 2 2015) आधिकारिक तौर पर इसका समर्थन करेगा नया आदेश 'गिट चेकआउट --to = '। [नीचे मेरा जवाब] देखें (http://stackoverflow.com/a/30186843/6309)। – VonC

+1

दरअसल, कमांड 'गिट वर्कट्री []' (गिट 2.5 आरसी 2) – VonC

उत्तर

92

गिट 2.5+ (क्यू 2 2015) उस सुविधा का समर्थन करेगा: एक बार जब आप एक गिट रेपो क्लोन कर लेंगे, तो आप नए कमांड git worktree add <path> [<branch>] के साथ विभिन्न पथों में एकाधिक शाखाओं को चेकआउट करने में सक्षम होंगे।

यह एक पुरानी लिपि contrib/workdir/git-new-workdir को एक और मजबूत तंत्र के साथ बदलता है, जहां उन "जुड़े" काम करने वाले पेड़ वास्तव में मुख्य रेपो नए $GIT_DIR/worktrees फ़ोल्डर में रिकॉर्ड किए जाते हैं (ताकि विंडोज़ सहित किसी भी ओएस पर काम किया जा सके)।

फिर, एक बार आप एक रेपो क्लोन है (/path/to/myrepo की तरह एक फ़ोल्डर में), तो आपको worktrees विभिन्न शाखाओं के लिए अलग स्वतंत्र पथ (/path/to/br1, /path/to/br2) में जोड़ सकते हैं, जबकि जो काम कर रहे मुख्य रेपो इतिहास से जुड़ा हुआ पेड़ होने (अब --git-dir विकल्प का उपयोग करने की आवश्यकता नहीं है)

"Multiple working directories with Git?" पर और देखें।

+1

यह नया स्वीकार्य उत्तर होना चाहिए, क्योंकि 2.5.एक्स अब विंडोज़ के लिए भी अनुशंसित संस्करण है http://i.imgur.com/oQvUhVl.png https://git-scm.com/download/win – RAnders00

-1

वास्तव में गिट केवल एक रिपोजिटरी निर्देशिका के भीतर भंडार डेटा की कार्यशील प्रतिलिपि बनाने का समर्थन करता है।

आप प्रतिबद्ध/दो अलग-अलग काम कर रहे प्रतियों के साथ एक ही भंडार को खींचने के लिए चाहते हैं, आप एक नंगे भंडार बना सकते हैं और दो काम कर प्रतियां के लिए यह क्लोन सकता है।

जब भी आप कुछ पूरा कर लेंगे, तो आप बस "मुख्य" नंगे भंडार को दबाएं।

कुछ संकेत:

man git-clone

git clone --bare

+3

_ "गिट केवल भंडार डेटा की एक कार्यशील प्रतिलिपि बनाने का समर्थन करता है" _ -1 सत्य नहीं है, 'git के बारे में उत्तर देखें -नया-workdir'। – sleske

+0

यह अच्छा विचार है। बस इसे दो बार क्लोन करें। –

39

$GIT_SRC_DIR/contrib/workdir/git-new-workdir पर एक नजर डालें।

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

+0

और इसी प्रकार: http://stackoverflow.com/questions/655202/git-and-c-workflow-how-to-handle-object-and-archive-files/1889179#1889179 – Tobu

+3

@Stefan, यह सबसे अच्छा है स्लाइड रोटी के बाद से चीज। –

+2

मुझे पता है कि यह पुराना है, लेकिन क्या आप कृपया कुछ स्पष्टीकरण प्रदान कर सकते हैं। –

0

मैं अपने छोटे स्क्रिप्ट का सुझाव http://www.redhotchilipython.com/en_posts/2013-02-01-clone-per-feature.html

यह Git क्लोन करते हैं और config की जगह (मूल रेपो में "देखो" करने के लिए है, तो खींच/धक्का में "मुख्य" रेपो जाना होगा) मूल रूप से है, लेकिन यह है जाएगा वास्तविक बूटस्ट्रैपिंग से एक अमूर्तता के लिए पर्याप्त सरल है।

0

गिट एक ही समय में कई वर्कट्री का समर्थन करता है। अधिक जानकारी के लिए देखें:

कैसे कभी यह बहुत आईडी के साथ कई worktree समर्थन करने के लिए कठिन है। उदाहरण के लिए वर्क्री का समर्थन करने के लिए जेजीएटी (ग्रहण आईडी) में यह enhancement request है।

तो, आपको कई समस्याओं के साथ मैन्युअल रूप से प्रोजेक्ट (कमांड लाइन) प्रबंधित करना होगा या आईडीई में एक वर्कट्री के साथ काम करना होगा।

+0

अभी तक, यह उत्तर सही नहीं है। कृपया उत्तर अपडेट करें। –

0

हमारे दोस्त VonC की तरह पांच महीने पहले कहा गया था, अब संस्करण 2.5.x के बाद से एक नई सुविधा है जो नौकरी करता है। git worktree

+0

इस्न जैसा कि मैंने 5 महीने पहले [मेरे उत्तर ऊपर] (http://stackoverflow.com/a/30186843/6309) में उल्लेख किया है वैसा ही है? – VonC

+0

ओपीएस। अब मैं भयानक महसूस कर रहा हूँ। मैंने उस पर उचित ध्यान नहीं दिया है। मेरी गलती। –

संबंधित मुद्दे