2010-01-26 9 views
190

मैं एक रिपो बनाना चाहता हूं जो रिमोट रेपो में खींचता है।बाहरी रेपो सबमिशन का उपयोग करने के लिए गिट प्रोजेक्ट कैसे सेट अप करें?

उदाहरण के लिए, एक submodule के रूप में jQuery कहना है:

git://github.com/jquery/jquery.git 

क्या एक submodule के रूप में jQuery के साथ एक रेपो बनाने और एक दूरस्थ रेपो के रूप में अपने खुद के बाहरी जोड़ने की प्रक्रिया होगी।

एक बार यह सेटअप होने के बाद, यदि मैं अपने रिमोट पर धक्का/खींचता हूं, तो क्या बाहरी बरकरार रहेगा?

+1

जब आप कहते हैं कि आप कह रहे हैं आप jQuery रेपो अपनी खुद की रेपो के एक submodule होना चाहता हूँ "में खींच"? – ezod

+0

हां बिल्कुल, क्षमा करें अगर यह स्पष्ट नहीं है। मैं जानना चाहता हूं कि मैंने अपने रिमोट – Tom

+0

में परिवर्तन को दबाकर खींचने के दौरान इसे बाहरी के रूप में कैसे सेट किया है [गिट सबमॉड्यूल ट्यूटोरियल] (https://git.wiki.kernel.org/index.php/GitSubmoduleTutorial) देखें गिट विकी पर। –

उत्तर

309
  1. आप एक परियोजना है लग रहा था - इसे कहते MyWebApp पहले से ही एक GitHub रेपो है कि
  2. आप अपनी परियोजना
  3. आप एक submodule के रूप में अपने प्रोजेक्ट में jQuery रेपो खींचने के लिए चाहते हैं, उसमें jQuery भंडार उपयोग करना चाहते हैं।

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

cd MyWebApp 
git submodule add git://github.com/jquery/jquery.git externals/jquery 

यह एक निर्देशिका externals/jquery नामित * बना सकते हैं और GitHub jQuery भंडार से लिंक होगा। अब हम सिर्फ यह करने के लिए submodule init और कोड क्लोन करने के लिए की जरूरत है:

git submodule update --init --recursive 

अब आप सभी नवीनतम कोड submodule में क्लोन होना चाहिए। यदि jquery repo बदलता है और आप नवीनतम कोड को नीचे खींचना चाहते हैं, तो बस submodule update कमांड को फिर से जारी करें। कृपया ध्यान दें: मेरे पास आमतौर पर मेरी परियोजनाओं में कई बाहरी भंडार हैं, इसलिए मैं हमेशा "बाहरी" निर्देशिका के तहत रिपो को समूहित करता हूं।

ऑनलाइन Pro Git Book में आसानी से पढ़े जाने वाले फैशन में प्रस्तुत submodules (और सामान्य रूप से गिट) पर कुछ अच्छी जानकारी है। वैकल्पिक रूप से, git help submodule अच्छी जानकारी भी देगा। या गिट विकी पर Git Submodule Tutorial पर एक नज़र डालें। बाहरी तंत्र: http://speirs.org/blog/2009/5/11/understanding-git-submodules.html

* एक सबसे अच्छा अभ्यास के रूप में, आप हमेशा अपने submodules अपने स्वयं निर्देशिका में, इस तरह के रूपरेखा के रूप में रखना चाहिए

मैं इस ब्लॉग प्रविष्टि जो सबवर्सन के SVN को submodules बारे में बात करती है और उन्हें तुलना देखा। यदि आप नहीं करते हैं, तो आपकी रूट प्रोजेक्ट निर्देशिका बहुत तेज हो सकती है।

+3

महान स्पष्टीकरण! :) इसके अलावा, "गिट हेल्प पनडुब्बियों" मदद करता है यदि आप थोड़ा अधिक विवरण, आंतरिक, इत्यादि चाहते हैं – WhyNotHugo

+0

@ ह्यूगो गुड प्वाइंट। मैंने उस जानकारी को उत्तर में जोड़ा। – memmons

+0

बस स्पष्ट करने के लिए, अगर मुझे एक परियोजना पर jQuery की आवश्यकता है, तो मेरे पास गीथब पर है, क्या यह एक सबमिशन के रूप में jQuery को जोड़ना बेहतर होगा? – aurbano

2

अंत मैं http://github.com/evilchelu/braid पाया कि यह कैसे मैं submodules और रिमोट की उम्मीद के साथ फिट करने के लिए काम करने के लिए

17

आपको जो कुछ जानने की आवश्यकता है, उसका उत्तर पहले से ही दिया जा चुका है, इसलिए मुझे यह पता नहीं चलेगा कि, मुझे आमतौर पर जानकारी का एक छोटा टुकड़ा मिला है जो आमतौर पर गायब है।

जैसा कि आप जानते हैं, "गिट पुल" सबमिड्यूल अपडेट नहीं करेगा, और "गिट सबोडोड्यूल अपडेट" उन सबोडोड्यूल के नवीनतम HEAD को डाउनलोड नहीं करेगा।

उनकी नवीनतम अपस्ट्रीम संशोधन करने के लिए अपने submodules के सभी अपडेट करने के लिए

git submodule foreach git pull 

उपयोग कर सकते हैं आप अक्सर अपने submodules बदल सकता है, और के बहुत सारे है, तो "Git foreach" अमूल्य हो जाएगा।

0

मुझे लगता है कि @ हूगो उत्तर आपको जो चाहिए वह हो सकता है और ठीक काम करता है। तो मुझे एक आसान तरीका मिल गया है।

git submodule update --remote 

यह सब कुछ है।

तो एक पूरा कार्यप्रवाह हो सकता है:

git clone project-with-submodules 
git submodule init 
git config -l 
git submodule update --remote 
संबंधित मुद्दे