खोज…


परिचय

यह विषय दिखाता है कि कैसे Git रेपो में अवांछित फ़ाइलों (या फ़ाइल परिवर्तनों) को जोड़ने से बचें। ऐसे कई तरीके है (वैश्विक या स्थानीय हैं .gitignore , .git/exclude , git update-index --assume-unchanged , और git update-index --skip-tree ), लेकिन मन में रखने के Git प्रबंध कर रहा है सामग्री है, जो साधन: अनदेखा करना वास्तव में एक फ़ोल्डर सामग्री (अर्थात फ़ाइलें) को अनदेखा करता है। एक खाली फ़ोल्डर को डिफ़ॉल्ट रूप से अनदेखा किया जाएगा, क्योंकि इसे वैसे भी जोड़ा नहीं जा सकता है।

.Gitignore फ़ाइल के साथ फ़ाइलों और निर्देशिकाओं को अनदेखा करना

आप Git को कुछ फ़ाइलों और निर्देशिकाओं को अनदेखा कर सकते हैं - अर्थात्, उन्हें Git द्वारा ट्रैक किए जाने से बाहर कर सकते हैं - अपनी रिपॉजिटरी में एक या एक से अधिक .gitignore फ़ाइलें बनाकर।

सॉफ़्टवेयर परियोजनाओं में, .gitignore आमतौर पर फ़ाइलों और / या निर्देशिकाओं की एक सूची होती है जो निर्माण प्रक्रिया के दौरान या रनटाइम के दौरान उत्पन्न होती हैं। .gitignore फ़ाइल में प्रविष्टियाँ नाम या पथ को इंगित कर सकती हैं:

  1. अस्थायी संसाधन जैसे कैश, लॉग फाइल, संकलित कोड इत्यादि।
  2. स्थानीय कॉन्फ़िगरेशन फ़ाइलें जिन्हें अन्य डेवलपर्स के साथ साझा नहीं किया जाना चाहिए
  3. गुप्त जानकारी युक्त फाइलें, जैसे लॉगिन पासवर्ड, कुंजी और क्रेडेंशियल्स

जब शीर्ष स्तर की निर्देशिका में बनाया जाता है, तो नियम पूरे रिपॉजिटरी में सभी फाइलों और उप-निर्देशिकाओं पर पुन: लागू होगा। जब एक उप-निर्देशिका में बनाया जाता है, तो नियम उस विशिष्ट निर्देशिका और उसके उप-निर्देशिका पर लागू होंगे।

जब किसी फ़ाइल या निर्देशिका को अनदेखा किया जाता है, तो यह नहीं होगा:

  1. Git द्वारा ट्रैक किया गया
  2. git status या git diff जैसे कमांड द्वारा रिपोर्ट किया गया
  3. git add -A जैसे आदेशों के साथ मंचन किया गया

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


उदाहरण

ग्लोब फ़ाइल पैटर्न के आधार पर .gitignore फ़ाइल में नियमों के कुछ सामान्य उदाहरण दिए गए हैं:

# Lines starting with `#` are comments.

# Ignore files called 'file.ext'
file.ext

# Comments can't be on the same line as rules!
# The following line ignores files called 'file.ext # not a comment'
file.ext # not a comment 

# Ignoring files with full path.
# This matches files in the root directory and subdirectories too.
# i.e. otherfile.ext will be ignored anywhere on the tree.
dir/otherdir/file.ext
otherfile.ext

# Ignoring directories
# Both the directory itself and its contents will be ignored.
bin/
gen/

# Glob pattern can also be used here to ignore paths with certain characters.
# For example, the below rule will match both build/ and Build/
[bB]uild/

# Without the trailing slash, the rule will match a file and/or
# a directory, so the following would ignore both a file named `gen`
# and a directory named `gen`, as well as any contents of that directory
bin
gen

# Ignoring files by extension
# All files with these extensions will be ignored in
# this directory and all its sub-directories.
*.apk
*.class

# It's possible to combine both forms to ignore files with certain
# extensions in certain directories. The following rules would be
# redundant with generic rules defined above.
java/*.apk
gen/*.class

# To ignore files only at the top level directory, but not in its
# subdirectories, prefix the rule with a `/`
/*.apk
/*.class

# To ignore any directories named DirectoryA 
# in any depth use ** before DirectoryA
# Do not forget the last /, 
# Otherwise it will ignore all files named DirectoryA, rather than directories
**/DirectoryA/
# This would ignore 
# DirectoryA/
# DirectoryB/DirectoryA/ 
# DirectoryC/DirectoryB/DirectoryA/
# It would not ignore a file named DirectoryA, at any level

# To ignore any directory named DirectoryB within a 
# directory named DirectoryA with any number of 
# directories in between, use ** between the directories
DirectoryA/**/DirectoryB/
# This would ignore 
# DirectoryA/DirectoryB/ 
# DirectoryA/DirectoryQ/DirectoryB/ 
# DirectoryA/DirectoryQ/DirectoryW/DirectoryB/

# To ignore a set of files, wildcards can be used, as can be seen above.
# A sole '*' will ignore everything in your folder, including your .gitignore file.
# To exclude specific files when using wildcards, negate them.
# So they are excluded from the ignore list:
!.gitignore 

# Use the backslash as escape character to ignore files with a hash (#)
# (supported since 1.6.2.1)
\#*#

अधिकांश .gitignore फाइलें विभिन्न भाषाओं में मानक हैं, इसलिए आरंभ करने के लिए, यहां नमूना द्वारा स्थापित .gitignore फाइलें हैं जो भाषा से सूचीबद्ध हैं, जिसमें से क्लोन या कॉपी / अपनी परियोजना में संशोधन कर सकते हैं। वैकल्पिक रूप से, एक नए प्रोजेक्ट के लिए आप ऑनलाइन टूल का उपयोग करके स्टार्टर फ़ाइल को ऑटो-जनरेट कर सकते हैं


के अन्य रूप .gitignore

.gitignore फ़ाइलों को रिपॉजिटरी के भाग के रूप में प्रतिबद्ध करने का इरादा है। यदि आप नियमों की अनदेखी किए बिना कुछ फ़ाइलों को अनदेखा करना चाहते हैं, तो यहां कुछ विकल्प दिए गए हैं:

  • संपादित .git/info/exclude फ़ाइल (के रूप में ही सिंटैक्स का उपयोग .gitignore )। नियम रिपॉजिटरी के दायरे में वैश्विक होंगे;
  • एक वैश्विक gitignore फ़ाइल सेट करें जो आपके सभी स्थानीय रिपॉजिटरी के नियमों की अनदेखी करेगी।

इसके अलावा, आप वैश्विक गिट कॉन्फ़िगरेशन को बदलने के बिना ट्रैक की गई फ़ाइलों में स्थानीय परिवर्तनों को अनदेखा कर सकते हैं:

  • git update-index --skip-worktree [<file>...] : मामूली स्थानीय संशोधनों के लिए
  • git update-index --assume-unchanged [<file>...] : उत्पादन के लिए तैयार, गैर-बदलते फाइल अपस्ट्रीम

आगे के विकल्पों के लिए बाद के झंडे और git update-index प्रलेखन के बीच अंतर पर अधिक विवरण देखें।


उपेक्षित फाइलों को साफ करना

आप अनदेखा फ़ाइलों को git clean -X करने के लिए git clean -X का उपयोग कर सकते हैं:

git clean -Xn #display a list of ignored files
git clean -Xf #remove the previously displayed files

नोट: -X (कैप्स) केवल अनदेखा फाइलों को साफ करता है। उपयोग -x (बिना कैप) भी अनट्रैक की गई फ़ाइलों को हटाने के लिए।

अधिक विवरण के लिए git clean प्रलेखन देखें।


अधिक जानकारी के लिए गिट मैनुअल देखें।

एक .gitignore फ़ाइल में अपवाद

यदि आप एक पैटर्न का उपयोग करके फ़ाइलों को अनदेखा करते हैं, लेकिन अपवाद हैं, तो अपवाद के लिए एक विस्मयादिबोधक चिह्न (!) उपसर्ग करें। उदाहरण के लिए:

*.txt
!important.txt

Git का निर्देश ऊपर के उदाहरण के साथ सभी फ़ाइलों को अनदेखा करने के लिए .txt नामित फ़ाइलों के अलावा विस्तार important.txt

यदि फ़ाइल एक उपेक्षित फ़ोल्डर में है, तो आप इसे इतनी आसानी से पुन: शामिल नहीं कर सकते:

folder/
!folder/*.txt

इस उदाहरण में फ़ोल्डर में सभी .txt फ़ाइलों को अनदेखा किया जाएगा।

सही तरीके से फ़ोल्डर को एक अलग लाइन पर फिर से शामिल करना है, फिर folder सभी फ़ाइलों को * द्वारा अनदेखा करें, अंत में *.txt को folder में फिर से शामिल करें, निम्न के रूप में:

!folder/
folder/*
!folder/*.txt

नोट : एक विस्मयादिबोधक चिह्न के साथ शुरू होने वाले फ़ाइल नामों के लिए, दो विस्मयादिबोधक चिह्न जोड़ें या \ वर्ण से बच जाएं:

!!includethis
\!excludethis

एक वैश्विक .gitignore फ़ाइल

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

$ git config --global core.excludesfile <Path_To_Global_gitignore_file>

Git अब प्रत्येक रिपॉजिटरी की अपनी .gitignore फ़ाइल के अलावा इसका उपयोग करेगा। इसके लिए नियम हैं:

  • यदि स्थानीय .gitignore फ़ाइल में स्पष्ट रूप से एक फ़ाइल शामिल होती है, जबकि वैश्विक .gitignore इसे अनदेखा करता है, तो स्थानीय .gitignore प्राथमिकता लेता है (फ़ाइल शामिल की जाएगी)
  • यदि रिपॉजिटरी को कई मशीनों पर क्लोन किया जाता है, तो वैश्विक .gigignore को सभी मशीनों पर लोड किया जाना चाहिए या कम से कम इसे शामिल करना चाहिए, क्योंकि अनदेखा की गई फ़ाइलों को रेपो तक .gigignore जाएगा, जबकि पीसी। ग्लोबल के साथ .gitignore इसे अपडेट करेगा। । यही कारण है कि अगर एक टीम द्वारा काम किया जाता है, तो एक रेपो स्पेसिफिक .gitignore एक ग्लोबल से बेहतर विचार है

यह फ़ाइल प्लेटफ़ॉर्म, मशीन या उपयोगकर्ता विशिष्ट *.ext.swp रखने के लिए एक अच्छी जगह है, जैसे कि OSX .DS_Store , Windows Thumbs.db या Vim *.ext.swp *.ext~ और *.ext.swp यदि आप रिपॉजिटरी में नहीं रखना चाहते हैं तो अनदेखा करें। । तो OS X पर काम करने वाला एक टीम का सदस्य सभी .DS_STORE और _MACOSX (जो वास्तव में बेकार है) जोड़ सकता है, जबकि विंडोज पर एक और टीम का सदस्य सभी thumbs.bd को अनदेखा कर सकता है

उन फ़ाइलों को अनदेखा करें जो पहले से ही Git रिपॉजिटरी के लिए प्रतिबद्ध हैं

यदि आपने पहले ही अपने Git रिपॉजिटरी में एक फ़ाइल जोड़ ली है और अब इसे ट्रैक करना बंद कर देना चाहते हैं (ताकि भविष्य में आने वाले समय में यह मौजूद न हो), आप इसे इंडेक्स से हटा सकते हैं:

git rm --cached <file>

यह फ़ाइल को रिपॉजिटरी से हटा देगा और आगे परिवर्तन को गिट द्वारा ट्रैक करने से रोकेगा। --cached विकल्प यह सुनिश्चित करेगा कि फ़ाइल भौतिक रूप से हटाई नहीं गई है।

ध्यान दें कि फ़ाइल की पहले जोड़ी गई सामग्री अभी भी गिट इतिहास के माध्यम से दिखाई देगी।

ध्यान रखें कि यदि किसी अन्य ने अनुक्रमणिका से फ़ाइल को निकालने के बाद रिपॉजिटरी से खींच लिया है, तो उनकी प्रतिलिपि भौतिक रूप से हटा दी जाएगी


आप Git को दिखावा कर सकते हैं कि फ़ाइल का वर्किंग डायरेक्टरी संस्करण अद्यतित है और इसके बजाय इंडेक्स संस्करण को पढ़ें (इस प्रकार इसमें बदलाव को अनदेखा करें) " वर्कट्री छोड़ें " बिट:

git update-index --skip-worktree <file>

लेखन इस से प्रभावित नहीं है, सामग्री सुरक्षा अभी भी पहली प्राथमिकता है। आप अपने कीमती अनदेखे परिवर्तनों को कभी नहीं खोएंगे; दूसरी ओर यह बिट टकराव के साथ संघर्ष करता है: इस बिट को हटाने के लिए, उपयोग करें

git update-index --no-skip-worktree <file>

इसे कभी-कभी गलत तरीके से Git से झूठ बोलने की सलाह दी जाती है और यह मान लिया जाता है कि फ़ाइल बिना जांच के अपरिवर्तित है। यह पहली नज़र में फ़ाइल के किसी भी परिवर्तन को अनदेखा करता है, इसे इसके सूचकांक से हटाए बिना:

git update-index --assume-unchanged <file>

यह फ़ाइल में किए गए किसी भी परिवर्तन को अनदेखा करने के लिए बाध्य करेगा (ध्यान रखें कि यदि आप इस फ़ाइल में कोई भी परिवर्तन खींचते हैं, या आप इसे रोकते हैं, तो आपके अनदेखे परिवर्तन खो जाएंगे )

यदि आप इस फ़ाइल के बारे में फिर से "देखभाल" करना चाहते हैं, तो निम्न कमांड चलाएँ:

git update-index --no-assume-unchanged <file>

अगर किसी फ़ाइल को नजरअंदाज किया जाता है तो जाँच करना

Git द्वारा अनदेखी फ़ाइलों पर git check-ignore कमांड रिपोर्ट।

आप कमांड लाइन पर फाइलनाम पास कर सकते हैं, और git check-ignore उन git check-ignore को सूचीबद्ध करेंगे जिन्हें अनदेखा किया गया है। उदाहरण के लिए:

$ cat .gitignore
*.o
$ git check-ignore example.o Readme.md
example.o

यहाँ, * .o फाइलें केवल .गितिग्नोर में परिभाषित की गई हैं, इसलिए Readme.md को git check-ignore ign के आउटपुट में सूचीबद्ध नहीं किया गया है।

यदि आप उस लाइन को देखना चाहते हैं, जो .ignignore फ़ाइल को अनदेखा करने के लिए ज़िम्मेदार है, तो git चेक-इग्नोर कमांड में -v जोड़ें:

$ git check-ignore -v example.o Readme.md
.gitignore:1:*.o        example.o

Git 1.7.6 के बाद से आप अनदेखा फ़ाइलों को देखने के लिए git status --ignored का भी उपयोग कर सकते हैं। आप इस बारे में अधिक जानकारी आधिकारिक दस्तावेज में या .गरिग्नोर द्वारा अनदेखी फाइलों को खोजने में पा सकते हैं।

सबफ़ोल्डर्स में फ़ाइलों को अनदेखा करना (एकाधिक gitignore फ़ाइलें)

मान लीजिए कि आपके पास इस तरह का भंडार है:

examples/
    output.log
src/
    <files not shown>
    output.log
README.md

output.log उदाहरण निर्देशिका में मान्य है और प्रोजेक्ट के लिए एक समझ इकट्ठा करने के लिए आवश्यक है जबकि src/ को डीबगिंग के दौरान बनाया गया है और इतिहास या रिपॉजिटरी के भाग में नहीं होना चाहिए।

इस फ़ाइल को अनदेखा करने के दो तरीके हैं। आप काम करने वाले डायरेक्टरी के रूट में .gitignore फ़ाइल में एक पूर्ण पथ रख सकते हैं:

# /.gitignore
src/output.log

वैकल्पिक रूप से, आप एक बना सकते हैं .gitignore में फ़ाइल src/ निर्देशिका और फ़ाइल है कि इस के सापेक्ष है उपेक्षा .gitignore :

# /src/.gitignore
output.log

किसी निर्देशिका में किसी फ़ाइल को अनदेखा करना

किसी भी निर्देशिका में फ़ाइल foo.txt को अनदेखा करने के लिए आपको बस उसका नाम लिखना चाहिए:

foo.txt # matches all files 'foo.txt' in any directory

यदि आप फ़ाइल को केवल पेड़ के हिस्से में अनदेखा करना चाहते हैं, तो आप एक विशिष्ट निर्देशिका के उपनिर्देशिका को ** पैटर्न के साथ निर्दिष्ट कर सकते हैं:

bar/**/foo.txt # matches all files 'foo.txt' in 'bar' and all subdirectories

या आप bar/ डायरेक्टरी में .gitignore फाइल बना सकते हैं। पिछले उदाहरण के समतुल्य इन सामग्रियों के साथ फ़ाइल bar/.gitignore बनाना होगा:

foo.txt # matches all files 'foo.txt' in any directory under bar/

नियमों की अनदेखी किए बिना स्थानीय स्तर पर फ़ाइलों को अनदेखा करें

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

यदि आप स्थानीय रूप से एक रिपॉजिटरी में कुछ फाइलों को नजरअंदाज करना चाहते हैं और फाइल को किसी भी रिपॉजिटरी का हिस्सा नहीं बनाना चाहते हैं, तो अपने रिपॉजिटरी के अंदर .git/info/exclude एडिट .git/info/exclude करें।

उदाहरण के लिए:

# these files are only ignored on this repo
# these rules are not shared with anyone
# as they are personal                                              
gtk_tests.py
gui/gtk/tests/*
localhost
pushReports.py
server/

प्रीफिल्ड .gitignore टेम्प्लेट

यदि आप अनिश्चित हैं कि आपकी .gitignore फ़ाइल में सूचीबद्ध करने के लिए कौन सा नियम है, या आप अपनी परियोजना में आम तौर पर स्वीकृत अपवाद जोड़ना चाहते हैं, तो आप एक .gitignore फ़ाइल चुन या उत्पन्न कर सकते हैं:

कई होस्टिंग सेवाएँ जैसे GitHub और BitBucket आपके द्वारा उपयोग की जा सकने वाली प्रोग्रामिंग भाषाओं और IDE के आधार पर .gitignore फाइलें उत्पन्न करने की क्षमता प्रदान करती हैं:

गितहुब .itignore ड्रॉपडाउन

फ़ाइल में बाद के परिवर्तनों को अनदेखा करना (इसे हटाए बिना)

कभी-कभी आप एक फ़ाइल को Git में रखना चाहते हैं लेकिन बाद के परिवर्तनों को अनदेखा कर देते हैं।

update-index का उपयोग करके किसी फ़ाइल या निर्देशिका में परिवर्तनों को अनदेखा करने के लिए Git को बताएं:

git update-index --assume-unchanged my-file.txt

उपरोक्त आदेश Git को निर्देश देता है कि मान लें कि my-file.txt नहीं बदला गया है, और परिवर्तनों की जांच या रिपोर्ट करने के लिए नहीं। फ़ाइल अभी भी रिपॉजिटरी में मौजूद है।

यह चूक प्रदान करने और स्थानीय वातावरण को ओवरराइड करने की अनुमति देने के लिए उपयोगी हो सकता है, जैसे:

# create a file with some values in
cat <<EOF
MYSQL_USER=app
MYSQL_PASSWORD=FIXME_SECRET_PASSWORD
EOF > .env

# commit to Git
git add .env
git commit -m "Adding .env template"

# ignore future changes to .env
git update-index --assume-unchanged .env

# update your password
vi .env

# no changes!
git status

फ़ाइल के केवल भाग को अनदेखा करना [ठूंठ]

कभी-कभी आप एक फ़ाइल में स्थानीय परिवर्तन करना चाहते हैं जिसे आप कमिट या प्रकाशित नहीं करना चाहते हैं। आदर्श रूप से स्थानीय सेटिंग्स को एक अलग फ़ाइल में केंद्रित किया जाना चाहिए जिसे .gitignore में रखा जा सकता है, लेकिन कभी-कभी एक अल्पकालिक समाधान के रूप में यह चेक-इन फ़ाइल में कुछ स्थानीय होने के लिए सहायक हो सकता है।

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

मान लीजिए यहाँ फ़ाइल file1.c से स्निपेट है:

struct settings s;
s.host = "localhost";
s.port = 5653;
s.auth = 1;
s.port = 15653; // NOCOMMIT
s.debug = 1; // NOCOMMIT
s.auth = 0; // NOCOMMIT

आप कहीं भी NOCOMMIT लाइनों को प्रकाशित नहीं करना चाहते हैं।

Git config फाइल को .git/config जोड़कर "nocommit" फ़िल्टर बनाएं:

[filter "nocommit"]
    clean=grep -v NOCOMMIT

इसे .gitmodules .git/info/attributes या .gitmodules जोड़ें (या बनाएं):

file1.c filter=nocommit

और आपकी NOCOMMIT लाइनें Git से छिपी हुई हैं।

चेतावनियां:

  • विशेष रूप से विंडोज पर फाइलों के प्रसंस्करण को साफ फिल्टर धीमा कर देता है।
  • जब Git इसे अपडेट करता है तो फ़ाइल से अनदेखा लाइन गायब हो सकती है। यह एक धब्बा फिल्टर के साथ मुकाबला किया जा सकता है, लेकिन यह मुश्किल है।
  • विंडोज पर परीक्षण नहीं किया गया

ट्रैक की गई फ़ाइलों में परिवर्तनों को अनदेखा करना। [ठूंठ]

.itignore और .git/info/exclude केवल अनियोजित फ़ाइलों के लिए काम करते हैं।

ट्रैक की गई फ़ाइल पर ध्वज को अनदेखा करने के लिए, कमांड अपडेट-इंडेक्स का उपयोग करें:

git update-index --skip-worktree myfile.c

इसे वापस लाने के लिए, उपयोग करें:

git update-index --no-skip-worktree myfile.c

आप इस स्निपेट को अपने वैश्विक गिट कॉन्फिगर में जोड़ सकते हैं ताकि अधिक सुविधाजनक git hide , git unhide और git hidden जा सके।

[alias]
    hide   = update-index --skip-worktree
    unhide = update-index --no-skip-worktree
    hidden  = "!git ls-files -v | grep ^[hsS] | cut -c 3-"

आप विकल्प का उपयोग भी कर सकते हैं - अपडेट-इंडेक्स फ़ंक्शन के साथ अपरिवर्तित

git update-index --assume-unchanged <file>

यदि आप परिवर्तनों के लिए इस फ़ाइल को फिर से देखना चाहते हैं, तो उपयोग करें

git update-index --no-assume-unchanged <file>

जब --assume-अपरिवर्तित ध्वज निर्दिष्ट किया जाता है, तो उपयोगकर्ता फ़ाइल को नहीं बदलने का वादा करता है और Git को यह मानने की अनुमति देता है कि कार्यशील ट्री फ़ाइल सूचकांक में दर्ज किए गए मेल से मेल खाती है। यह उस स्थिति में विफल हो जाएगी जब उसे इस फ़ाइल को सूचकांक में संशोधित करने की आवश्यकता होती है उदाहरण के लिए जब किसी कमेटी में विलय हो रहा हो; इस प्रकार, यदि मान लिया गया कि अनट्रेक्ड फ़ाइल को अपस्ट्रीम में बदल दिया जाता है, तो आपको स्थिति को मैन्युअल रूप से संभालना होगा। इस मामले में प्रदर्शन पर ध्यान केंद्रित है।

जबकि --स्किप-वर्कट्री ध्वज तब उपयोगी होता है जब आप गिट को किसी विशिष्ट फ़ाइल को कभी न छूने का निर्देश देते हैं क्योंकि फ़ाइल स्थानीय रूप से परिवर्तित होने वाली होती है और आप गलती से किसी विशेष के लिए कॉन्फ़िगर किए गए परिवर्तन (अर्थात कॉन्फ़िगरेशन / प्रॉपर्टीज़ फ़ाइल) नहीं चाहते हैं वातावरण)। जब दोनों सेट होते हैं, तो स्किप-वर्कट्री धारणा-अपरिवर्तित होने की पूर्वता लेता है।

पहले से ही प्रतिबद्ध फ़ाइलें साफ़ करें, लेकिन .ignignore में शामिल हैं

कभी-कभी ऐसा होता है कि एक फ़ाइल को गिट द्वारा ट्रैक किया जा रहा था, लेकिन बाद में समय में इसे .itignore में जोड़ा गया, ताकि इसे ट्रैक करना बंद कर दिया जा सके। यह .गितिग्नोर के अतिरिक्त ऐसी फाइलों को साफ करना भूल जाता है। इस मामले में, पुरानी फ़ाइल अभी भी रिपॉजिटरी में घूमती रहेगी।

इस समस्या को ठीक करने के लिए, कोई भी रिपॉजिटरी में "ड्राई-रन" हटाने का काम कर सकता है, इसके बाद सभी फाइलों को फिर से जोड़ देगा। जब तक आपके पास लंबित परिवर्तन नहीं होते हैं और --cached पैरामीटर पारित हो जाता है, यह कमांड चलाने के लिए काफी सुरक्षित है:

# Remove everything from the index (the files will stay in the file system) 
$ git rm -r --cached .

# Re-add everything (they'll be added in the current state, changes included)
$ git add .

# Commit, if anything changed. You should see only deletions
$ git commit -m 'Remove all files that are in the .gitignore'

# Update the remote
$ git push origin master

एक खाली फ़ोल्डर बनाएँ

इस तथ्य के कारण गिट में एक खाली फ़ोल्डर को जोड़ना और प्रतिबद्ध करना संभव नहीं है कि जीआईटी फाइलों का प्रबंधन करता है और उनकी निर्देशिका को उनके साथ संलग्न करता है, जो कमिट करता है और गति में सुधार करता है। इसके आसपास जाने के लिए, दो तरीके हैं:

विधि एक: .gitkeep

इसके आस-पास प्राप्त करने के लिए एक हैक, गेट के लिए फ़ोल्डर को पंजीकृत करने के लिए एक .gitkeep फ़ाइल का उपयोग करना है। ऐसा करने के लिए, बस आवश्यक निर्देशिका बनाएं और फ़ोल्डर में एक .gitkeep फ़ाइल जोड़ें। यह फ़ाइल रिक्त है और केवल फ़ोल्डर को पंजीकृत करने के अलावा किसी भी उद्देश्य की सेवा नहीं करता है। विंडोज में ऐसा करने के लिए (जिसमें अजीब फ़ाइल नामकरण परंपराएं हैं) बस निर्देशिका में git bash खोलें और कमांड चलाएँ:

$ स्पर्श

यह कमांड सिर्फ वर्तमान डायरेक्टरी में एक .gitkeep फ़ाइल को खाली करता है

विधि दो: dummy.txt

इसके लिए एक और हैक बहुत ऊपर है और एक ही चरणों का पालन किया जा सकता है के समान है, लेकिन एक के बजाय .gitkeep , बस एक का उपयोग dummy.txt बजाय। इसमें संदर्भ मेनू का उपयोग करके विंडोज में इसे आसानी से बनाने में सक्षम होने का अतिरिक्त बोनस है। और आपको उनमें अजीब संदेश भी छोड़ने के लिए .gitkeep । आप खाली निर्देशिका को ट्रैक करने के लिए .gitkeep फ़ाइल का उपयोग भी कर सकते हैं। .gitkeep सामान्य रूप से एक खाली फ़ाइल होती है जिसे खाली निर्देशन को ट्रैक करने के लिए जोड़ा जाता है।

.गरिग्नोर द्वारा अनदेखी फाइलों को ढूंढना

आप कमांड के साथ वर्तमान निर्देशिका में गिट द्वारा नजरअंदाज की गई सभी फाइलों को सूचीबद्ध कर सकते हैं:

git status --ignored

तो अगर हमारे पास इस तरह का भंडार है:

.git
.gitignore
./example_1
./dir/example_2
./example_2

... और .gitignore फ़ाइल जिसमें:

example_2

... आदेश के परिणाम से होगा:

$ git status --ignored

On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

.gitignore
.example_1

Ignored files:
  (use "git add -f <file>..." to include in what will be committed)

dir/
example_2

यदि आप निर्देशिकाओं में पुनरावर्ती रूप से उपेक्षित फ़ाइलों को सूचीबद्ध करना चाहते हैं, तो आपको अतिरिक्त पैरामीटर - --untracked-files=all

परिणाम इस तरह दिखेगा:

$ git status --ignored --untracked-files=all
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

.gitignore
example_1

Ignored files:
  (use "git add -f <file>..." to include in what will be committed)

dir/example_2
example_2


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow