आप एक विशिष्ट फ़ोल्डर में Git रिपॉजिटरी को कैसे क्लोन करते हैं?


2242

कमांड को निष्पादित करने git clone git@github.com:whateverसे मेरे वर्तमान फ़ोल्डर में एक निर्देशिका बनाई जाती है whatever, और उस फ़ोल्डर में गिट रिपॉजिटरी की सामग्री को छोड़ देता है:

/httpdocs/whatever/public

मेरी समस्या यह है कि मुझे अपनी वर्तमान निर्देशिका में क्लोन किए गए गिट रिपॉजिटरी की सामग्री चाहिए ताकि वे वेब सर्वर के लिए उचित स्थान पर दिखाई दें:

/httpdocs/public

मुझे पता है कि मैंने रिपॉजिटरी को क्लोन करने के बाद फ़ाइलों को कैसे स्थानांतरित किया, लेकिन यह गिट को तोड़ने के लिए लगता है, और मैं सिर्फ कॉल करके अपडेट करने में सक्षम होना चाहूंगा git pull। मैं यह कैसे कर सकता हूँ?


3
विंडोज पर आप फोल्डर से फाइल्स को स्थानांतरित कर सकते हैं, जहां आप रेपो [यदि कोई हो] को क्लोन कर सकते हैं, तो जब आप क्लोन क्लोन करते हैं तो यह खाली होता है । क्लोनिंग के बाद अपनी फ़ाइलों को वापस ले जाएँ [ctrl-z] और whoala ! यदि वर्तमान फ़ोल्डर खाली है तो उपयोग करें: git क्लोन giturl

43
voila वर्तनी है
Matthias

80
@MatthiasDailey देखा है वास्तविक वर्तनी
silkfire

6
et voilà एट वॉयला के लिए फ्रेंच है
Fattie

जवाबों:


3218

विकल्प A:

git clone git@github.com:whatever folder-name

एर्गो, right hereउपयोग के लिए:

git clone git@github.com:whatever .

विकल्प बी:

.gitफ़ोल्डर भी ले जाएँ । ध्यान दें कि .gitफ़ोल्डर अधिकांश चित्रमय फ़ाइल खोजकर्ताओं में छिपा हुआ है, इसलिए छिपी हुई फ़ाइलों को दिखाना सुनिश्चित करें।

mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/

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

और भी बेहतर:

अपनी कामकाजी प्रति कहीं और रखें, और एक प्रतीकात्मक लिंक बनाएं। ऐशे ही:

ln -s /where/it/is/right/now /the/path/I/want/to/use

आपके लिए यह मामला कुछ इस तरह होगा:

ln -sfn /opt/projectA/prod/public /httpdocs/public

यदि आप चाहते हैं, तो इसे आसानी से परीक्षण के लिए बदला जा सकता है:

ln -sfn /opt/projectA/test/public /httpdocs/public

फाइलों को इधर-उधर किए बिना। जोड़ी -fnमें मामला किसी इन पंक्तियों को कॉपी किया जाता है ( -fशक्ति है, -nपहले से ही और गैर मौजूदा लिंक के साथ कुछ अक्सर अवांछित घटनाओं को रोकने में)।

यदि आप इसे काम करना चाहते हैं, तो विकल्प A का उपयोग करें, यदि कोई अन्य व्यक्ति आपके द्वारा किए गए कार्यों को देखने जा रहा है, तो विकल्प C का उपयोग करें।


8
मैंने आपके 'बेहतर अभी तक' विकल्प के बारे में नहीं सोचा था, और मुझे यह पसंद है, हालांकि मुझे यकीन नहीं है कि क्यों। इसके क्या फायदे हैं?
डेविड स्मिथ

6
यह शायद अभी कोई लाभ प्रदान नहीं करता है, लेकिन अगर आप किसी दिन सामान ले जाने का फैसला करते हैं तो यह आपको बहुत परेशानी से बचा सकता है।
गर्क गॉड

12
साथ ही आप "बेहतर अभी तक" विकल्प के साथ रिलीज के बीच स्विच कर सकते हैं। यह विशेष रूप से उपयोगी है और सर्वर के लिए उपयोग किया जाता है।
हालिल Halzgür

4
@ मुझे लगता है कि उनका मतलब है .git का प्रतीकात्मक लिंक बनानाln -s path/to/.git path/to/working/directory
अलेक्जेंडर

27
क्या कोई इसके फायदे बता सकता है ?? मैं आज थोड़ी घनी हो रही हूं। एक सिमलिंक लाभ सर्वर का उपयोग कैसे करता है?
ट्रिपल

586

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

git clone git@github.com:whatever .

""। अंत में चेकआउट फ़ोल्डर के रूप में वर्तमान फ़ोल्डर को निर्दिष्ट करता है।


28
सच है, इसलिए आप इस फ़ोल्डर में "git init" को क्लोनिंग से पहले चलाना नहीं चाहते हैं। लेकिन अगर आपने किया है, तो क्लोनिंग करने से पहले .it फ़ोल्डर को हटा देना चाल चलेगा।
मगनी

3
मेरे उत्तर में खाली निर्देशिका के लिए तय किया गया
csomakk

1
यह nitrous.io में काम नहीं कर सका? खाली करने के बाद भी, यह निर्देशिका खाली नहीं है
तेजस मनोहर

@TejasManohar सुनिश्चित करें कि आपने छिपी हुई फ़ाइलों को भी हटा दिया है।
ब्रिटनी 4:15

ls -aछिपी हुई सहित सभी फ़ाइलों को दिखाएगा।
माइकल डोरस्ट

215

फ़ोल्डर में जाएं .. यदि फ़ोल्डर खाली है, तो:

git clone git@github.com:whatever .

अन्य

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master

9
वास्तव में यह मेरे लिए सबसे उपयोगी जवाब था, जब मुझे नए बनाए गए भंडार के लिए पहले से ही बनाई गई परियोजना को आगे बढ़ाने की जरूरत थी। कुडोस!
विहरर

13
केवल एक उत्तर जो गैर-खाली फ़ोल्डर में चेकआउट करने के लिए निर्दिष्ट करता है, धन्यवाद।
प्रेस्टन बैडर

2
यह वास्तव में सहायक है क्योंकि switch -tयह स्पष्ट रूप से गिट चेकआउट के प्रलेखन पर नहीं दिखाया गया है ।
चेतबाहना

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

2
git से -t प्रलेखन: -t, --ट्रैक नई शाखा बनाते समय, "अपस्ट्रीम" कॉन्फ़िगरेशन सेट करें। विवरण के लिए गिट-शाखा (1) में "--ट्रैक" देखें।
csomakk

87

बेसिक गिट रिपोजिटरी क्लोनिंग

आप एक भंडार के साथ क्लोन करते हैं

git clone [url]

उदाहरण के लिए, यदि आप स्टैनफोर्ड यूनिवर्सिटी ड्रुपल ओपन फ्रेमवर्क लाइब्रेरी को क्लोन करना चाहते हैं, जिसे ओपन_फ्रेमवर्क कहा जाता है, तो आप ऐसा कर सकते हैं:

$ git clone git://github.com/SU-SWS/open_framework.git

यह एक निर्देशिका बनाता है जिसका नाम है open_framework (आपके वर्तमान स्थानीय फ़ाइल सिस्टम स्थान पर), इसके अंदर .it निर्देशिका को इनिशियलाइज़ करता है, उस रिपॉजिटरी के लिए सभी डेटा को नीचे खींचता है, और नवीनतम संस्करण की एक वर्किंग कॉपी की जाँच करता है। यदि आप नई बनाई गई ओपन_फ्रेमवर्क डायरेक्टरी में जाते हैं, तो आप वहां प्रोजेक्ट फाइलों को देखेंगे, जो काम करने या उपयोग करने के लिए तैयार हैं।

एक विशिष्ट स्थानीय फ़ोल्डर में एक रिपॉजिटरी का क्लोनिंग

यदि आप रिपॉजिटरी को ओपन_फ्रेमवर्क के अलावा किसी अन्य नाम की डायरेक्टरी में क्लोन करना चाहते हैं, तो आप इसे अगले कमांड-लाइन विकल्प के रूप में निर्दिष्ट कर सकते हैं:

$ git clone git:github.com/SU-SWS/open_framework.git mynewtheme

वह कमांड पिछले वाले के समान काम करता है, लेकिन लक्ष्य निर्देशिका को mynewtheme कहा जाता है।

Git में कई अलग-अलग ट्रांसफर प्रोटोकॉल हैं, जिनका आप उपयोग कर सकते हैं। पिछला उदाहरण git: // प्रोटोकॉल का उपयोग करता है, लेकिन आप http (s): // या उपयोगकर्ता @ सर्वर: /path.git भी देख सकते हैं, जो SSH हस्तांतरण प्रोटोकॉल का उपयोग करता है।


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

23

एक विशिष्ट फ़ोल्डर में गिट रिपॉजिटरी को क्लोन करने के लिए, आप -C <path>पैरामीटर का उपयोग कर सकते हैं , जैसे

git -C /httpdocs clone git@github.com:whatever

यद्यपि यह अभी भी इसके whateverऊपर एक फ़ोल्डर बनाएगा , इसलिए रिपॉजिटरी की सामग्री को वर्तमान निर्देशिका में क्लोन करने के लिए, निम्नलिखित सिंटेलिक का उपयोग करें:

cd /httpdocs
git clone git@github.com:whatever .

ध्यान दें कि मौजूदा निर्देशिका में क्लोनिंग की अनुमति केवल तब होती है जब निर्देशिका खाली हो

चूंकि आप उस फ़ोल्डर में क्लोनिंग कर रहे हैं जो जनता के लिए सुलभ है, इसलिए अपने वेब सर्वर कॉन्फ़िगरेशन (जैसे फ़ाइल में) फ़ोल्डर का उपयोग करके --separate-git-dir=<git dir>या बाहर करके अपने Git रिपॉजिटरी को अपने कार्यशील पेड़ से अलग करने पर विचार करें ।.git.htaccess


17

कार्य निर्देशिका प्रस्तुत करने के लिए क्लोन करने के लिए :

git clone https://github.com/link.git

किसी अन्य निर्देशिका के लिए क्लोन करने के लिए :

git clone https://github.com/link.git ./Folder1/Folder2

आशा है ये मदद करेगा :)


यह मेरे लिए भी काम किया। ./फ़ोल्डर के लिए पथ की शुरुआत में नहीं
Alon Gouldman

13

जब आप उन फ़ाइलों को स्थानांतरित करते हैं जहां आप उन्हें चाहते हैं, तो क्या आप .gitनिर्देशिका को भी स्थानांतरित कर रहे हैं ? आपके OS और कॉन्फ़िगरेशन के आधार पर, यह निर्देशिका छिपी हो सकती है।

इसमें रेपो और सहायक फाइलें शामिल हैं, जबकि प्रोजेक्ट फाइलें जो आपकी /publicनिर्देशिका में हैं, वर्तमान में चेक-आउट कमिट (डिफ़ॉल्ट रूप से मास्टर शाखा) में केवल संस्करण हैं।


13

क्लोन:

git clone git@jittre.unfuddle.com:jittre/name.git

"विशिष्ट शाखा" क्लोन करें:

git clone -b [branch-name] git@jittre.unfuddle.com:jittre/name.git

13

यदि आप वर्तमान फ़ोल्डर में क्लोन करना चाहते हैं, तो आपको यह प्रयास करना चाहिए:

git clone https://github.com/example/example.git ./

8
घातक: गंतव्य पथ '।' पहले से मौजूद है और एक खाली निर्देशिका नहीं है।
क्लीटन

11

प्रयोग

git clone <repository>

स्थानीय मशीन पर <रिपॉजिटरी> पर स्थित रिपॉजिटरी को क्लोन करें। मूल रिपॉजिटरी स्थानीय फाइल सिस्टम पर या HTTP या SSH के माध्यम से सुलभ रिमोट मशीन पर स्थित हो सकती है।

git clone <repo> <directory>

स्थानीय मशीन पर <निर्देशिका> नामक फ़ोल्डर में <रिपॉजिटरी> पर स्थित रिपॉजिटरी को क्लोन करें।

स्रोत: एक भंडार स्थापित करना


9

सुनिश्चित करें कि यदि आप वर्तमान निर्देशिका में चीज़ की जाँच करने का प्रयास कर रहे हैं तो .it रिपॉजिटरी को हटा दें।

rm -rf .git फिर git clone https://github.com/symfony/symfony-sandbox.git


3

यहां बताया गया है कि मैं इसे कैसे करूंगा, लेकिन मैंने इसे मेरे लिए करने के लिए एक उपनाम बनाया है।

$ cd ~Downloads/git; git clone https:git.foo/poo.git

ऐसा करने का एक और अधिक सुंदर तरीका है, हालांकि मुझे यह अपने लिए सबसे आसान लगता है।

यहाँ मैं उर्फ ​​चीजों को गति देने के लिए बनाया गया हूँ। मैंने इसे zsh के लिए बनाया है, लेकिन इसे मछली या xyzsh, fizsh, और इतने पर जैसे बैश या किसी अन्य शेल के लिए ठीक काम करना चाहिए।

संपादित करें ~/.zshrc, /.bashrcआदि अपने पसंदीदा संपादक के साथ (मेरा लीफपैड है, इसलिए मैं लिखूंगा $ leafpad ~/.zshrc)।

हालाँकि, मेरी व्यक्तिगत पसंद, मेरे सभी उपनामों पर नज़र रखने के लिए एक zsh प्लगइन बनाना है। आप इन आदेशों को चलाकर ओह-माय-ज़श के लिए एक व्यक्तिगत प्लगइन बना सकते हैं:

$ cd ~/.oh-my-zsh/
$ cd plugins/
$ mkdir your-aliases-folder-name; cd your-aliases-folder-name
     # In my case '~/.oh-my-zsh/plugins/ev-aliases/ev-aliases'
$ leafpad your-zsh-aliases.plugin.zsh
     # Again, in my case 'ev-aliases.plugin.zsh'

बाद में, अपनी नई बनाई गई खाली alises.plugin फ़ाइल में इन पंक्तियों को जोड़ें:

# Git aliases
alias gc="cd ~/Downloads/git; git clone "

(यहां से, अपना नाम मेरे साथ बदलें।)

फिर, उपनामों को काम करने के लिए, उन्हें (ज़श के साथ) खट्टा होना पड़ता है (या जो भी कहा जाता है)। ऐसा करने के लिए, अपने कस्टम प्लगइन दस्तावेज़ के अंदर इसे जोड़ें:

## Ev's Aliases

#### Remember to re-source zsh after making any changes with these commands:

#### These commands should also work, assuming ev-aliases have already been sourced before:

allsource="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh; clear"
sourceall="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh"
#### 

####################################

# git aliases

alias gc="cd ~/Downloads/git; git clone "
# alias gc="git clone "
# alias gc="cd /your/git/folder/or/whatever; git clone "

####################################

अपने ओह-माई-ज़िश प्लगइन को सहेजें, और चलाएं allsource। यदि वह काम नहीं करता है, तो बस चलाएं source $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh। यह प्लगइन स्रोत को लोड करेगा जो आपको allsourceअभी से उपयोग करने की अनुमति देगा ।


मैं अपने सभी उपनामों के साथ Git रिपॉजिटरी बनाने की प्रक्रिया में हूं। कृपया यहाँ उन्हें बाहर की जाँच के लिए स्वतंत्र महसूस: EV है डॉट फ़ाइलें । कृपया बेझिझक फोर्क करें और अपनी आवश्यकताओं के अनुरूप उन पर सुधार करें।


2

आप उपयोग कर रहे हैं sshके लिए git cloningआप निम्न आदेश का उपयोग कर सकते हैं।

git -C path clone git@github.com:path_to_repo.git

जैसे: आपके रास्ते के git -C /home/ubuntu/ clone git@github.com:kennethreitz/requests.gitलिए गिट रिपॉजिटरी को खींचेगा ।requests/home/ubuntu/


2

किसी कारण से यह वाक्य रचना बाहर नहीं खड़ी है:

git clone repo-url [folder]

यहां फ़ोल्डर स्थानीय फ़ोल्डर (जो एक स्थानीय भंडार होगा) का एक वैकल्पिक मार्ग है।

Git दूरस्थ रिपॉजिटरी से स्थानीय रिपॉजिटरी में cloneभी pullकोड करेगा । वास्तव में यह सच है:

git clone repo-url  =  git init + git remote add origin repo-url + git pull

0

यद्यपि उपरोक्त सभी उत्तर अच्छे हैं, मैं स्वीकार किए गए उत्तर में प्रस्तावित BEST के रूप में सार्वजनिक HTML निर्देशिका में प्रतीकात्मक लिंक पद्धति का उपयोग करने के बजाय एक नई विधि का प्रस्ताव करना चाहूंगा। आपको अपने सर्वर वर्चुअल होस्ट कॉन्फ़िगरेशन तक पहुंच की आवश्यकता है।

यह सीधे रिपॉजिटरी निर्देशिका की ओर इशारा करते हुए आपके वेब सर्वर के वर्चुअल होस्ट को कॉन्फ़िगर करने के बारे में है। अपाचे में आप ऐसा कर सकते हैं:

DocumentRoot / var / www / html / वेबसाइट / आपका git-repo

यहाँ एक आभासी होस्ट फ़ाइल का एक उदाहरण है:

<VirtualHost *:443>
    ServerName example.com

    DocumentRoot /path/to/your-git-repo
    ...
    ...
    ...
    ...
</VirtualHost>

0

आप कस्टम निर्देशिका नाम के साथ क्लोन करने के लिए git कमांड का उपयोग कर सकते हैं

git clone <git_repo_url> <your_custom_directory_name>

नोट: आपको अपनी कस्टोम निर्देशिका बनाने की आवश्यकता नहीं है क्योंकि यह स्वचालित रूप से बनाएगी


-1
For Windows user 

1> Open command prompt.
2> Change the directory to destination folder (Where you want to store your project in local machine.)
3> Now go to project setting online(From where you want to clone)
4> Click on clone, and copy the clone command.
5> Now enter the same on cmd .

It will start cloning saving on the selected folder you given .

-5

मूल पोस्ट से इस लाइन के बारे में:

"मुझे पता है कि मैंने रेपो क्लोन करने के बाद फ़ाइलों को कैसे स्थानांतरित किया, लेकिन यह गिट को तोड़ने के लिए लगता है"

मैं ऐसा करने में सक्षम हूं और मैं अपने ऐड, कमिट, पुश, पुल ऑपरेशन के साथ अब तक कोई समस्या नहीं देखता हूं।

यह दृष्टिकोण ऊपर कहा गया है, लेकिन बस चरणों में टूट नहीं गया है। यहाँ कदम है कि मेरे लिए काम कर रहे हैं:

  1. किसी भी नए अस्थायी फ़ोल्डर में रेपो को क्लोन करें
  2. उस रूट फ़ोल्डर में cd जिसे आपने स्थानीय स्तर पर क्लोन किया है
  3. फ़ोल्डर की संपूर्ण सामग्री को कॉपी करें, जिसमें / / निर्देशिका निर्देशिका शामिल है - किसी भी मौजूदा फ़ोल्डर में जिसे आप पसंद करते हैं; (एक ग्रहण परियोजना कहें जिसे आप अपने रेपो के साथ मिलाना चाहते हैं)

मौजूदा फ़ोल्डर जिसे आपने अभी फाइलों में कॉपी किया है, अब git के साथ इंटरैक्ट करने के लिए तैयार है।

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