विंडोज पर गिट रिपॉजिटरी में निर्देशिकाओं को अनदेखा करना


1105

मैं Windows पर msysgit का उपयोग करके Git में निर्देशिकाओं या फ़ोल्डरों को कैसे अनदेखा कर सकता हूं?


क्या आप चाहते हैं कि कैश फ़ोल्डर को रिपॉजिटरी से पूरी तरह से बाहर रखा जाए, या सिर्फ इसकी सामग्री को?
गारेथ

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

@ गैरेथ: चूंकि खाली फ़ोल्डरों को गिट से ट्रैक नहीं किया जाता है, अगर सामग्री को अनदेखा किया जाता है, तो फ़ोल्डर भी होगा, है न?
Eckes

3
मैंने केवल इसका उल्लेख किया है क्योंकि कुछ लोग .gitkeepएक निर्देशिका को इंगित करने के लिए छिपी हुई फ़ाइलों (आमतौर पर ) का उपयोग करते हैं, जिसे रखा जाना चाहिए
गारेथ

2
है /अंत क्या वह अपने एक निर्देशिका इसे अनदेखा करना चाहिए पता है बनाता है पर?
चार्ली पार्कर

जवाबों:


1594

.gitignoreअपने प्रोजेक्ट की डायरेक्टरी में एक फाइल बनाएं । निर्देशिका नाम को फ़ाइल में दर्ज करके अनदेखा करें (स्लैश संलग्न के साथ):

dir_to_ignore/

अधिक जानकारी यहाँ है


130
विंडोज़ cmd प्रॉम्प्ट में आप सही फ़ाइल बनाने के लिए 'edit .gitignore' या 'notepad .gitignore' का उपयोग कर सकते हैं।
जॉय ग्रीन

44
या आप विंडोज़ git bash कमांड प्रॉम्प्ट के भीतर से 'टच .गित्निगोर' का भी उपयोग कर सकते हैं और यह सही ढंग से नामित फ़ाइल बनाएगा जो तब नोटपैड या जैसे द्वारा संपादित किया जा सकता है ...
SGB

39
या केवल एक फ़ाइल बनाएँ, जिसका नाम .itignore है। एक्सप्लोरर के साथ और इसे नोटपैड के साथ संपादित करें (ट्रेलिंग डॉट को हटा दिया जाएगा)। इस तरह से आपको कमांड प्रॉम्प्ट का उपयोग करने की आवश्यकता नहीं है।
पी। गैलब्रेथ

6
या आप टर्मिनल से .gitignore vim कर सकते हैं। :)
मौलीकट

34
या, जो आश्चर्यजनक रूप से उल्लेख नहीं किया गया है, भले ही यह सबसे तेज़ तरीका है, बस कंसोल में "इको फ़ोल्डर_टो_इग्नोर >> .ignignore" टाइप करें।
गॉडस्मिथ

205

डिफ़ॉल्ट रूप से, विंडोज एक्सप्लोरर प्रदर्शित करेगा .gitignoreजब वास्तव में फ़ाइल का नाम है .gitignore.txt

गिट का उपयोग नहीं होगा .gitignore.txt

और आप फ़ाइल का नाम नहीं बदल सकते हैं .gitignore, क्योंकि Windows Explorer को लगता है कि यह बिना नाम के प्रकार के gitignore की फ़ाइल है।

गैर कमांड लाइन समाधान:

आप एक फ़ाइल का नाम बदल सकते हैं ".gitignore।" , और यह ".gitignore" बनाएगा

46
यह काम करता है? मैंने हमेशा लोगों को नोटपैड खोलने के लिए कहा है और इस रूप में सहेजें डायलॉग में फ़ाइलनाम को डबलकोट्स से घिरा हुआ है, इसलिए उदाहरण के लिए ".gitignore"और यह इसे बिना किसी एक्सटेंशन को जोड़े स्वचालित रूप से सहेजता है।
तीरंदाज

9
साफ। एक अनुगामी अवधि सहित काम करता है। अंतिम अवधि में एक्सप्लोरर स्ट्रिप्स बंद हो जाता है, जिसके परिणामस्वरूप ".gitignore" नामक एक फ़ाइल होती है। मुझे लगता है कि उद्धरण विधि हालांकि साफ है और आश्चर्य पैदा करने की संभावना कम है।
त्रिनको

4
या, इस रूप में सहेजें संवाद में, फ़ाइल प्रकार को "सभी फ़ाइलें ( )" में बदलें - फिर विंडोज किसी भी एक्सटेंशन को संलग्न नहीं करेगा।
ओसाकावेबी

5
या git bash में अपने फोल्डर में "टच
.ignignore

3
".gitignore."- यह बहुत अच्छी चाल है! मुझे हमेशा से ही परेशानी थी .htaccess...
ओमेरक क्रोनेन

105

ऐसा लगता है कि फ़ाइलों और निर्देशिकाओं की अनदेखी करने के दो मुख्य तरीके हैं:

  1. .gitignore

    • फ़ोल्डर (विंडोज में) के .gitignoreअलावा अपने रिपॉजिटरी की जड़ में फ़ाइल को रखना .git, सुनिश्चित करें कि आपको वास्तविक फ़ाइल एक्सटेंशन दिखाई देता है और फिर .gitignore.(खाली फ़ाइल एक्सटेंशन बनाने के लिए अंत में बिंदु के साथ) करें
    • वैश्विक कॉन्फ़िगरेशन बनाना ~/.gitignore_globalऔर git config --global core.excludesfile ~/.gitignore_globalइसे अपने Git कॉन्फ़िगरेशन में जोड़ना

    नोट: पहले ट्रैक की गई फाइलें रनिंग से अनट्रैक की जा सकती हैं git rm --cached filename

  2. रिपॉजिटरी को बाहर करना - स्थानीय फ़ाइलों के लिए जिन्हें साझा करने की आवश्यकता नहीं है, आप बस फ़ाइल पैटर्न या निर्देशिका को फ़ाइल में जोड़ते हैं .git/info/exclude। Theses नियम प्रतिबद्ध नहीं हैं, इसलिए वे अन्य उपयोगकर्ताओं द्वारा नहीं देखे जाते हैं । अधिक जानकारी यहाँ है

अनदेखा फ़ाइलों की सूची में अपवाद बनाने के लिए, यह प्रश्न देखें ।


36
अच्छा काम इंगित करता है git rm --cached <filename>। रेपो के लिए पूरी तरह से महत्वपूर्ण है जो आपके पास मौजूद है.gitignore
मॉरपावर

2
git rm - कैशेड <filename> ने जो समस्या आई है, उसे
.gitignore के

1
हाँ गिट rm - कैश्ड फ़ाइल नाम बिल्कुल महत्वपूर्ण है। यह मुझे पागल बना रहा था क्योंकि जीआईटी अभी भी फाइलों का मंचन कर रहा था जिन्हें मैंने स्पष्ट रूप से अनदेखा करने के लिए कहा था (आरंभिक प्रतिबद्ध के बाद gitignore बनाया)। आपका बहुत बहुत धन्यवाद!
पोट्टिटो

1
मेरी समस्या का समाधान किया। Gitignore में वेंडर फोल्डर को जोड़ने के बावजूद Git मेरे लार्वा रेपो में वेंडर फोल्डर को ट्रैक कर रहा था। बहुत बहुत धन्यवाद।
जयंत

44

मैं में एक फ़ाइल बनाने कुछ मुद्दों था Windows Explorer एक साथ .शुरुआत में।

एक वर्कअराउंड कमांडशेल में जाना था और "एडिट" का उपयोग करके एक नई फाइल बनाना था।


2
या बस .अंत में एक अतिरिक्त जोड़ें ताकि एक्सप्लोरर सोचता .gitignoreहै कि विस्तार है। फिर उस प्रविष्टि पर बिना किसी विस्तार के ट्रेसिंग डॉट बस खाया जाता है और आपको .gitignore TL के साथ छोड़ दिया जाता है ; DR: इसे नाम देने की कोशिश करें .gitignore.=> आप अंत में.gitignore
leerssej

43

Git को कुछ फ़ाइलों या फ़ोल्डरों को अनदेखा करने का निर्देश देने के लिए, आपको .gitignoreफ़ाइल बनानी होगी।

लेकिन विंडोज एक्सप्लोरर में आपको फ़ाइल के लिए एक नाम देना होगा। आप सिर्फ एक एक्सटेंशन के साथ फाइल नहीं बना सकते। ट्रिक यह है कि एक खाली टेक्स्ट फाइल बनाएं और कमांड प्रॉम्प्ट पर जाएं और फाइल का नाम इसमें बदलें .gitignore:

ren "New Text Document.txt" .gitignore

अब अपने पसंदीदा टेक्स्ट एडिटर के साथ फाइल खोलें और अपनी इच्छानुसार फ़ाइल / फ़ोल्डर के नाम जोड़ें। आप इस तरह वाइल्डकार्ड का उपयोग भी कर सकते हैं *.txt:।


15
या बस: गूंज dir_to_ignore /> .gitignore
ओलिवर

2
या type nul > .gitignoreएक खाली फ़ाइल बनाने के लिए
कास्त्रो रॉय

या बस फ़ाइल को कॉल करें .gitignore.जब फ़ाइल एक्सटेंशन आपके विंडोज एक्सप्लोरर में छिपा नहीं है
वैरी

22

यदि आप किसी फ़ोल्डर को बनाए रखना चाहते हैं और उसके अंदर मौजूद फ़ाइलों को नहीं, तो केवल सामग्री के रूप में "*" फ़ोल्डर में ".ignignore" फ़ाइल डालें। यह फ़ाइल Git को रिपॉजिटरी की सभी सामग्री को अनदेखा कर देगी। लेकिन .gitignoreआपके भंडार में शामिल किया जाएगा।

$ git add path/to/folder/.gitignore

यदि आप एक खाली फ़ोल्डर जोड़ते हैं, तो आपको यह संदेश प्राप्त होता है (.ignignore एक छिपी हुई फ़ाइल है)

The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added

इसलिए, "-f" का प्रयोग बल जोड़ने के लिए करें:

$ git add path/to/folder/.gitignore -f

19

विंडोज में स्लैश के साथ एक अतिरिक्त पकड़ है। के साथ .ignignore में एकल निर्देशिका को छोड़कर

dir_to_exclude /

संभवतः काम करेगा, लेकिन सभी निर्देशिकाओं को छोड़कर

/

जब आप my file.txtअपनी निर्देशिका में रिक्त स्थान (जैसे ) के साथ फ़ाइल नाम रखते हैं तो समस्याएँ उत्पन्न होती हैं : Git Bash इन स्पेस को एक बैकस्लैश (जैसे my\ file.txt) के साथ छोड़ देता है और Windows के लिए Git के बीच अंतर नहीं करता है /और \

सभी निर्देशिकाओं को बाहर करने के लिए, बेहतर उपयोग:

** /

दो लगातार तारांकन निर्देशिका सामग्री को दर्शाते हैं।


15

आपकी \.git\infoपरियोजनाओं की निर्देशिका में भी एक बाहर की फाइल है जो प्रभावी रूप से उसी तरह की है जैसा कि .gitignore(मुझे लगता है)। आप इसमें अनदेखा करने के लिए फ़ाइलें और निर्देशिका जोड़ सकते हैं।


मुझे यह तरीका पसंद है, मैं बस वहाँ के रास्ते के साथ नहीं मिल सकता, मैं मुख्य रेपो में एक फ़ोल्डर को अनदेखा करना चाहता हूं, कैसे?
शिम्मी वेइटहैंडलर

लेकिन क्या आप अकेले .git में फ़ाइलों को छोड़ने के लिए नहीं हैं (आधिकारिक साधनों के माध्यम से सामग्री में हेरफेर)?
पीटर मोर्टेंसन

13

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

**/build/output/Debug/

12

Git में एक संपूर्ण निर्देशिका को अनदेखा करने के लिए, सबसे आसान तरीका लक्ष्य निर्देशिका के भीतर एक .gitignore फ़ाइल को शामिल करना है जिसमें बस "*" शामिल है।

एक उदाहरण उदाहरण,

उदाहरण प्रणाली

/root/
    .gitignore
    /dirA/
        someFile1.txt
        someFile2.txt
    /dirB/
        .gitignore
        someFile3.txt
        someFile4.txt

लक्ष्य

  • / dirB / की सामग्री को अनदेखा करें

शीर्ष स्तर .gitignore (/root/.gitignore)

  • यह वह जगह है जहाँ आपकी मानक gitignore जानकारी जाती है

उपेक्षित निर्देशिका .gitignore (/root/dirB.gitignore)

  • यह फ़ाइल केवल '*' के रूप में पढ़ती है और निर्देशिका को पूरी तरह से, स्वयं और सभी फ़ाइलों को अनदेखा कर दिया जाता है!

और यह इतना आसान है :)


10

जब सब कुछ विफल रहता है तो फ़ाइल को संपादित करने का प्रयास करें

/.git/info/exclude

और निर्देशिका को आप इस तरह से फ़ाइल के अंत में जोड़ना चाहते हैं:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/

मैंने फ़ोल्डर "संपत्ति" और "संकलित" को अनदेखा करने के लिए फ़ाइलों और निर्देशिकाओं की सूची में जोड़ा।


1
मैं विंडोज 10 पर एटम का उपयोग कर रहा हूं। यह काम कर रहा है! धन्यवाद दोस्त!
पुटु डे

मैंने अपने वर्तमान कॉन्फ़िगरेशन के साथ अन्य सभी की कोशिश की और यह मेरा अंतिम निश्चित जवाब था।
Xedret

9

यूनिक्स पर:

touch .gitignore

विंडोज पर:

echo > .gitignore

एक टर्मिनल में निष्पादित ये कमांड .gitignoreवर्तमान स्थान में एक फ़ाइल बनाएंगे ।

फिर बस इस .gitignoreफ़ाइल में जानकारी जोड़ें (उदाहरण के लिए नोटपैड ++ का उपयोग करके) जो फ़ाइलों या फ़ोल्डरों को अनदेखा किया जाना चाहिए। अपने परिवर्तन सहेजें। बस :)

अधिक जानकारी: .itignore


9

आप सामग्री के साथ ".gitignore" फ़ाइल बना सकते हैं:

*
!.gitignore

इससे मेरा काम बनता है।


2
यह सबसे अच्छा जवाब है, यह परियोजना की तैनाती और रखरखाव में अतिरिक्त लाभ भी लाता है।
नितिन ...

कौन है "सिम्पल" ?
पीटर मोर्टेंसन

8

मुझे कुछ समस्याएँ हो रही हैं, जिससे मुझे .gitignoreविंडोज पर फाइल लेने में दिक्कत हो रही है । $GIT_DIR/info/excludeफ़ाइल हमेशा हालांकि काम करने के लिए लगता है।

हालाँकि, इस दृष्टिकोण का नकारात्मक पक्ष यह है कि $GIT_DIRनिर्देशिका में फ़ाइलें चेक-इन में शामिल नहीं हैं, और इसलिए साझा नहीं की जाती हैं।

ps $GIT_DIRआमतौर पर छिपे हुए फ़ोल्डर का नाम है.git


हाँ, विंडोज़ पर git वास्तव में .itignore के बारे में बारीक है - स्थानीय बहिष्कृत फ़ाइल वह करती है, जिसकी मुझे आवश्यकता है। धन्यवाद!
andersop

6

मुझे लगता है कि समस्या यह है कि आपका काम करने वाला पेड़ जैसा है:

a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore

... .gitignoreआप वर्णन के साथ। यह आपको git statusआउटपुट देगा जैसे:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
#    a-cache/
#    b-cache/

... अगरindex.html फ़ाइलों को अभी तक भंडार में जोड़ दिया गया नहीं किया है। (Git देखता है कि कैश निर्देशिकाओं में बिना बही हुई फाइलें हैं, लेकिन यह केवल निर्देशिकाओं को रिपोर्ट करता है।) इसे ठीक करने के लिए, सुनिश्चित करें कि आपने index.htmlफ़ाइलें जोड़ी हैं और प्रतिबद्ध हैं :

git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"

... और आपके git statusबाद जैसा दिखेगा:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
nothing added to commit but untracked files present (use "git add" to track)

(जाहिर है कि आप भी ऐसा ही करना चाहते हैं .gitignore। मैं इस परीक्षा के मामले में आलसी था।)


1
आप शायद कमिटमेंट करना चाहते हैं। विशेष रूप से आप इसे करने के लिए परिवर्तनों को ट्रैक करना चाहते हैं, और इसलिए आपकी टीम है (यदि आप एक के साथ काम कर रहे हैं)। देखें stackoverflow.com/a/767213/123033
डेव एवरिट

2
@ डेव एवरिट: यही कारण है कि मैंने कहा "जाहिर है आप कमिटमेंट करना चाहते हैं।"
मार्क लोंगेयर

6

विंडोज और मैक पर, यदि आप वर्तमान निर्देशिका में Flower_Data_Folder नामक फ़ोल्डर को अनदेखा करना चाहते हैं, तो आप कर सकते हैं:

echo Flower_Data_Folder >> .gitignore

यदि यह एक फ़ाइल नाम है data.txt:

echo data.txt >> .gitignore

यदि यह "डेटा / पासवर्ड.टेक्स्ट" जैसा एक रास्ता है

echo "Data/passwords.txt" >> .gitignore. 

2

मेरे पास ऐसे ही मुद्दे थे। मैं लिनक्स लोगों के साथ एक साझा रिपॉजिटरी के साथ एक विंडोज टूल चेन पर काम करता हूं, और वे किसी दिए गए फ़ोल्डर में समान रूप से (केस को छोड़कर) नामों के साथ फाइल बनाते हैं।

इसका प्रभाव यह है कि मैं रिपॉजिटरी को क्लोन कर सकता हूं और तुरंत दर्जनों 'संशोधित' फाइलें हैं, जिन्हें अगर मैंने चेक किया है, तो यह कहर पैदा करेगा।

मेरे पास संवेदनशील मामलों के लिए विंडोज सेट है और जीआईटी को मामले को नजरअंदाज नहीं करना है, लेकिन यह अभी भी विफल रहता है (Win32 एपीआई कॉल जाहिरा तौर पर)।

अगर मैं फ़ाइलों को gitignore करता हूं तो मुझे .gitignore फ़ाइल को ट्रैक नहीं करने के लिए याद रखना होगा।

लेकिन मुझे यहाँ एक अच्छा जवाब मिला:

http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html


लिंक टूटा हुआ प्रतीत होता है (यह पहली बार 'https' संस्करण पर पुनर्निर्देशित होता है): "सुरक्षित कनेक्शन विफल। आर्काइव के कनेक्शन के दौरान एक त्रुटि हुई ।robwilkerson.org। PR_END_OF_FILE_ERROR"
पीटर

0

बस .gitignoreअपने प्रोजेक्ट फोल्डर में फाइल बनाएं फिर उसमें एक्स के लिए फोल्डर का नाम जोड़ें:

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