Git में .gitignore में नए बनाए गए विशिष्ट फ़ोल्डर जोड़ें


88

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

जब मैं git स्टेटस चलाता हूं तो मुझे इस फ़ोल्डर को अनदेखा करने के लिए Git नहीं मिल सकता है।

On branch master
Your branch is ahead of 'origin/master' by 1 commit.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file: app_public/views/pages/privacy.php
    new file: app_public/views/pages/terms.php
    new file: public_html/stats/ctry_usage_200908.png
    new file: public_html/stats/daily_usage_200908.png
    new file: public_html/stats/dns_cache.db
    new file: public_html/stats/hourly_usage_200908.png
    new file: public_html/stats/index.html
    new file: public_html/stats/usage.png
    new file: public_html/stats/usage_200908.html
    new file: public_html/stats/webalizer.current
    new file: public_html/stats/webalizer.hist

Changed but not updated:
    modified: .gitignore

मैंने अपने .gitignore में कुछ अलग लाइनें जोड़ीं लेकिन यह अभी भी उन्हें जोड़ने की कोशिश कर रहा है:

public_html/stats
public_html/stats/**
public_html/stats/**/*
public_html/stats/*

जवाबों:


98

कोशिश करो /public_html/stats/*?

लेकिन चूंकि git statusरिपोर्ट की गई फ़ाइलों को कमिट किया जा सकता है, इसका मतलब है कि आप उन्हें पहले ही मैन्युअल रूप से जोड़ चुके हैं। किस मामले में, ज़ाहिर है, इसे अनदेखा करने में थोड़ी देर हो गई है। आप git rm --cacheउन्हें (IIRC) कर सकते हैं।


16
रुको! आपके पास "प्रतिबद्ध होने के लिए फाइलें" हैं - इसका मतलब है कि आप git addउन्हें पहले ही पढ़ चुके हैं।
माइकल क्रेलिन -

92

इसके लिए दो मामले हैं

केस 1: फ़ाइल पहले ही गिट रेपो में जोड़ी गई।

केस 2: नई बनाई गई फाइल और उसका स्टेटस अभी भी उपयोग करते समय अनट्रैक फाइल के रूप में दिखा रहा है

git status

यदि आपके पास मामला 1 है:

STEP 1: फिर चलाएं

git rm --cached filename 

इसे git रेपो कैश से निकालने के लिए

अगर यह एक निर्देशिका है तो उपयोग करें

git rm -r --cached  directory_name

STEP 2: यदि केस 1 खत्म हो गया है, तो .gitignoreअपने git रेपो में नई फाइल बनाएं

चरण 3: फ़ाइल को अनदेखा / मानने के लिए गिट को बताने के लिए निम्नलिखित का उपयोग करें अपरिवर्तित है

git update-index --assume-unchanged path/to/file.txt

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

अगर आपको अभी भी आर्टिकल git इग्नोर फाइल लिंक को पढ़ना समझ नहीं आ रहा है ।


3
fatal: Unable to mark file .idea/jsLibraryMappings.xmlजब मैं करता हूं तो मुझे मिलता हैupdate-index
OlehZiniak

@OlehZiniak क्या आपको पता चला है कि जब कोई fatal: Unable to mark fileत्रुटि मिलती है तो क्या करना चाहिए । कृपया मदद करे।
चंचल परदेशी

फ़ाइल की अनुमति और स्वामित्व जिसे आप चिह्नित करने में असमर्थ हैं। किस चरण में यह त्रुटि दिखाती है?
क्षितीज

16

"Git help ign" से हम सीखते हैं:

यदि पैटर्न एक स्लैश के साथ समाप्त होता है, तो इसे निम्नलिखित विवरण के उद्देश्य से हटा दिया जाता है, लेकिन यह केवल एक निर्देशिका के साथ एक मैच ढूंढेगा। दूसरे शब्दों में, foo / एक निर्देशिका foo और उसके नीचे के रास्तों से मेल खाएगा, लेकिन एक नियमित फ़ाइल या एक प्रतीकात्मक लिंक फू से मेल नहीं खाएगा (यह उस तरीके के अनुरूप है जो git में सामान्य रूप से pathspec काम करता है)।

इसलिए आपको जो चाहिए वह है

public_html / आँकड़े /


1
इसका मतलब है कि "public_html / आँकड़े /" केवल एक निर्देशिका से मेल खाएगा, लेकिन एक फ़ाइल से नहीं, बल्कि "public_html / आँकड़े" से निर्देशिका और उस नाम की फ़ाइल दोनों का मिलान होगा, इसलिए यह समस्या नहीं है। हालांकि एक अच्छा विचार है।
jmanning2k

1
वह आदमी पृष्ठ कहता है कि foo / एक निर्देशिका फू से मेल खाएगा और उसके नीचे के रास्ते। ओपी फ़ोल्डर और उसकी सामग्री को अनदेखा करना चाहता है। Git ऐड के साथ अन्य मुद्दों के अलावा, यह इसी तरह से किया जाता है।
काजाको

6

यह है /public_html/stats/*

$ ~/myrepo> ls public_html/stats/
bar baz foo
$ ~/myrepo> cat .gitignore 
public_html/stats/*
$ ~/myrepo> git status
# On branch master
#
# Initial commit
#
# 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)
$ ~/myrepo>

2

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

~ / Bin / IGNORE_ALL

#!/bin/bash
# Usage: IGNORE_ALL <commit message>                                                                                                                             
git status --porcelain | grep '^??' | cut -f2 -d' ' >> .gitignore              
git commit -m "$*" .gitignore 

उदा: IGNORE_ALL ने स्टेट इग्नोर को जोड़ा

यह सिर्फ आपके .itignore और कमिट करने के लिए सभी इग्नोर की गई फाइल्स को जोड़ देगा। ध्यान दें कि आप बाद में फ़ाइल में एनोटेशन जोड़ना चाहते हैं।

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