पुनरावर्ती पूरे फ़ोल्डर को एक रिपॉजिटरी में जोड़ें


250

मैं GitHub पर मास्टर शाखा में एक शाखा जोड़ने और उस शाखा पर एक फ़ोल्डर पुश करने का प्रयास कर रहा हूं।

शाखा की फ़ोल्डर संरचना इस तरह दिखती है - SocialApp / SourceCode / DevTrunk / SocialApp और सभी स्रोत कोड फ़ाइलें अंतिम फ़ोल्डर में हैं।

मैं निम्नलिखित Git कमांड का उपयोग कर रहा हूं:

git add *
git commit -m with the message
git push

यह GitHub पर केवल पहले फ़ोल्डर "SocialApp" पर जोर दे रहा है और फ़ोल्डर के अंदर मौजूद फ़ोल्डर SourceCode को अनदेखा कर रहा है। मैं यह कैसे तय करुं?


4
कहीं फाइलें हैं? क्या उन्हें अनदेखा नहीं किया गया है .gitignore?
चार्ल्सबी

This is pushing only the first folder- git फोल्डर की बिल्कुल भी परवाह नहीं करता है, केवल फाइलें। कृपया
कमिटमेंट

मुझे भी यही समस्या हो रही है। मुझे नहीं लगता कि यह एक समस्या है, लेकिन सिर्फ अपेक्षित व्यवहार है। हैरानी की बात है कि कई समाधान हैं।

ध्यान दें: जब आपके फ़ोल्डर खाली होते हैं तो उन्हें ट्रैक नहीं किया जाता है। खाली निर्देशिकाओं को रखने के लिए एक खाली .keep फ़ाइल लगाने के लिए इसका अच्छा अभ्यास
Dude

जवाबों:


356

.gitignoreफ़ाइल को जांचें , यदि उपनिर्देशिका को अनदेखा किया गया है।

फिर पुनः प्रयास करें

git add --all
git commit -am "<commit message>"
git push

4
ध्यान दें कि इसमें .गितिग्नोर में उल्लिखित फाइलें शामिल नहीं होंगी। मैं आमतौर पर उन लोगों को हाथ से जोड़ता हूं या इस तरह से एक बैच फ़ाइल का उपयोग करता for /R %%f in (*.*) do git add --force %%fहूं : (देखें bitbucket.org/jeroenp/besharp.net/src/tip/Scripts/GIT/… )
जीरो वेर्ट प्लूटर्स

10
फ़ोल्डर की पूरी ट्री संरचना को पुन: जोड़ने के लिए, कमांड होनी चाहिएgit add --all :/
जेसन हार्टले

7
@JeroenWiertPluimers .gitignored git add -f -allफ़ाइलों को जोड़ने के लिए काम करता है
Orwellophile

3
@JasonHartley आपकी टिप्पणी का जवाब हो सकता है। धन्यवाद!
शटअप्पगडा

4
क्या यह सभी मौजूदा फ़ाइलों को गिट रेपो में नहीं जोड़ा जाता है, न कि केवल वर्तमान फ़ोल्डर में? मुझे नहीं लगता कि यह वही है जो मूल प्रश्न पूछ रहा है।
टेड

31

यह मेरे लिए काम किया:

git add . --force

1
अन्य उत्तरों के लिए फ़ाइल सूची को कमांड के तर्क के रूप में गणना करने की आवश्यकता होती है, यह एक नहीं है, इसलिए एक बेहतर विकल्प है।
18

3
निश्चित रूप से सबसे अच्छा जवाब .. एक संपादन यह उल्लेख करना होगा कि आपको ज़रूरत नहीं है --forceअगर आप चाहते हैं कि उपेक्षा अभी भी सम्मानित हो।
ग्रैफिकरोबॉट

31

SETUP - एक स्थानीय सर्वर पर स्थानीय रिपॉजिटरी - क्लाइंट लैन के माध्यम से स्थानीय सर्वर से जुड़ा हुआ है

git add foldername/\\*

सर्वर पर बनाने के लिए ...

git commit -m "comments..."
git push remote_server_name master

अधिकतर, उपयोगकर्ता मूल के रूप में Remote_server_name असाइन करेंगे ...

git remote add remote_server_name username@git_server_ip:/path/to/git_repo

9
के रूप में विफल रहा fatal: pathspec 'foldername/\\*' did not match any files। के रूप में काम किया git add foldername/\*
तपोजका T

बीच क्या अंतर है git add foldername/\\*और git add --all?
दानियाल

17

दोनों "git add *" और "git add SocialApp" को शीर्ष निर्देशिका से कहा जाता है, इसे पुनरावर्ती सभी निर्देशिकाओं को जोड़ना चाहिए।

संभवतः आपके पास SocialApp / SourceCode / DevTrunk / SocialApp में कोई फाइल नहीं है और यही कारण है।

"SocialApp / SourceCode / DevTrunk / SocialApp / .temporary" (और चेक .gitignore) को कॉल करने का प्रयास करें और फिर git जोड़ने का पुनः प्रयास करें।


2
मुझे ऐसा नहीं लगता, मैं git add * का उपयोग करता हूं और उसी मुद्दे पर हूं।

16

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

मैंने उपनिर्देशिका से गिट रिपॉजिटरी को हटाकर और फिर फ़ोल्डर को जोड़कर समस्या को हल किया।


इससे मेरे लिए हल हो गया। मुझे किक को ठीक करने के लिए फ़ोल्डर को स्वयं भी नाम बदलना पड़ा।
टोटेम

6

मैंने बस इसका उपयोग किया है:

git add app/src/release/*

आपको बस जोड़ने के लिए फ़ोल्डर को निर्दिष्ट करने की आवश्यकता है और फिर *पुनरावर्ती के अंदर सब कुछ जोड़ने के लिए उपयोग करना है।


5

मैं इस समस्या में भाग गया, जिसमें मुझे थोड़ा समय लगा, फिर याद आया कि git खाली फ़ोल्डर्स को स्टोर नहीं करेगा। याद रखें कि यदि आपके पास एक फ़ोल्डर ट्री है जिसे आप संग्रहीत करना चाहते हैं, तो उस पेड़ के कम से कम सबसे गहरे फ़ोल्डर में एक फ़ाइल डालें, ".ititici" नामक फ़ाइल जैसी कुछ, बस गिट द्वारा भंडारण को प्रभावित करने के लिए।


5

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

$ cd directory
$ git add directoryname

1
सीडी डायरेक्टरी गिट ऐड *
फ्रांकोइस रिचर्ड

3

मेरे पास भी यही मुद्दा था और मेरे पास .gitignore फ़ाइल नहीं है। मेरी समस्या निम्नलिखित तरीके से हल की गई थी। यह सभी उप-निर्देशिकाओं और फ़ाइलों को ले गया।

git add <directory>/*

1

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

git add -A

लेकिन किसी कारण के लिए, यह केवल फ़ोल्डर जोड़ता है। बाद में मुझे पता चला कि सर्वर फाइलों में भी इसका .gitफोल्डर होता है इसलिए कमांड काम नहीं करता है।

tl; dr : सुनिश्चित करें कि उस .gitफ़ोल्डर के अंदर कोई फ़ोल्डर नहीं है जिसे आप स्टेज करना चाहते हैं।


1
आप इस के आसपास कैसे प्राप्त कर सकते हैं यदि आप .git फ़ोल्डरों को निकालना नहीं चाहते हैं
रोल

@rolls देख Git submodules
mr5

1

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

git init   //this initializes a .git  repository in your working directory

git remote add origin <URL_TO_YOUR_REPO.git> // this points to correct repository where files will be uploaded

git add *   // this adds all the files to the initialialized git repository

यदि आप फ़ाइलों को किसी भी परिवर्तन से पहले मास्टर में विलय कर लेते हैं तो आपको परिवर्तनों को निष्पादित करना होगा

git commit -m "applied some changes to the branch"

इसके बाद शाखा को मास्टर शाखा में चेकआउट करें


केवल उत्तर दें कि उल्लेख हैinit
अतुल

1

परिदृश्य / समाधान 1:
सुनिश्चित करें कि आपका Folder/ किसी भी संयोग Sub-folderसे .gitignoreफाइल में नहीं है ।


परिदृश्य / समाधान 2:
डिफ़ॉल्ट रूप से, git add .पुनरावर्ती रूप से कार्य करता है।


परिदृश्य / समाधान 3:
git add --all :/ सुचारू रूप से काम करता है, जहां git add .(काम) नहीं होता है।
(@ जेसनहार्टली की टिप्पणी)


परिदृश्य / समाधान 4:
जिस मुद्दे का मैं व्यक्तिगत रूप से सामना कर रहा था Subfolders or Files, वह जोड़ रहा था , जो बहु के बीच आम थे Folders

उदाहरण के लिए:
Folder/Subfolder-L1/Subfolder-L2/...file12.txt
Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt
Folder/Subfolder-L1/...file1.txt

तो Gitमुझे जोड़ने की सिफारिश कर git submoduleरहा था, जो मैंने कोशिश की लेकिन एक दर्द था।


अंत में मेरे लिए जो काम किया गया वह था:

1. git addएक फ़ाइल जो कि अंतिम छोर / स्तर पर है Folder
उदाहरण के लिए:
git add Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt

2. git add --all :/अब।
यह बहुत तेजी से सभी को जोड़ देगा Folders, Subfoldersऔर files



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