क्या केवल कुछ फ़ाइलों को अनदेखा करने के बजाय कुछ फ़ाइलों को शामिल करने के लिए git बताने का कोई तरीका है?


165

मेरे कार्यक्रम आम तौर पर बड़ी आउटपुट फाइलें (~ 1 जीबी) उत्पन्न करते हैं, जो मैं गिट रिपॉजिटरी तक नहीं करना चाहता हूं। इसलिए करने में सक्षम होने के बजाय

git add .

मुझे कुछ ऐसा करना है

git add *.c *.cc *.f *.F *.C *.h *.cu

जो थोड़ा बोझिल है ...

मुझे पूरा विश्वास है कि मैं एक क्विक पर्ल स्क्रिप्ट लिख सकता हूँ। डायरेक्टरी कंटेंट को .ignignore में डाल देता है और फिर .gitinclude (या कुछ इसी तरह के नाम) की फाइल के आधार पर फाइल्स को हटा देता है, लेकिन ऐसा लगता है कि थोड़ा बहुत हैकिश है। क्या कोई बेहतर तरीका है?

जवाबों:


231

मुझे खुद इसे आज़माने की ज़रूरत नहीं थी, लेकिन टीएफएम के मेरे पढ़ने से ऐसा लगता है कि यह एक नकारात्मक पैटर्न है जो आप चाहते हैं। आप बाद में नकारात्मक प्रविष्टियों के साथ .itignore में प्रविष्टियों को ओवरराइड कर सकते हैं। इस प्रकार आप कुछ ऐसा कर सकते हैं:

*.c
!frob_*.c
!custom.c

इसके लिए custom.c को छोड़कर सभी .c फाइलों को अनदेखा करें और "frob_" से शुरू होने वाली कोई भी चीज


20
धन्यवाद, TED यह काम किया। मुझे केवल * .ignignore फ़ाइल को * से शुरू करना था और फिर मेरे सभी सम्मिलित फ़ाइल पैटर्न को विस्मयादिबोधक बिंदु से आगे बढ़ाना था।
डेज़ी सोफिया होल्मन

8
फ़ोल्डर्स के बारे में कैसे? मैं एक नियम को नकारकर अंदर फ़ोल्डर्स और फ़ाइलों को शामिल करने का एक तरीका नहीं ढूंढ सकता।
मारसियो क्रूज़

4
फ़ोल्डरों के बारे में कृपया stackoverflow.com/questions/12799855/…
uzsolt

2
बहुत अच्छा। मैं vimrc और bashrc
मार्टिन कैपोडिसी

1
यदि आप एक विशिष्ट फ़ोल्डर को शामिल करना चाहते हैं तो @uzsolt काम नहीं करता है। देखें stackoverflow.com/questions/987142/…
डिकैप्रियो

73

अपनी रिपॉजिटरी में .itignore फाइल बनाएं और आप केवल c फाइलों को ट्रैक करना चाहते हैं और अन्य सभी फाइलों को नजरअंदाज करना चाहते हैं और फिर इसमें निम्नलिखित पंक्तियों को जोड़ सकते हैं ...।

*
!*.c

'*' सभी फाइलों को नजरअंदाज कर देगा

तथा ! फाइलों को नजरअंदाज करना होगा नजरअंदाज .... इसलिए यहां हम ग से पूछ रहे हैं कि सी फाइल को नजरअंदाज न करें ...।


क्या आपको .*छिपी हुई फ़ाइलों की भी आवश्यकता है ?
त्रिकूट

2
के *लिए भी एक वाइल्डकार्ड है ., इसलिए छिपी हुई फ़ाइलों को भी नजरअंदाज कर दिया जाता है, लेकिन फिर समाप्त होने वाली सभी छिपी हुई फाइलें .cशामिल होती हैं।
रोहमर

2
इस पद्धति का उपयोग करके मुझे लगता है कि सबफ़ोल्डर्स की फ़ाइलों को भी अनदेखा कर दिया जाता है। अधिक जानकारी के लिए इसे देखें stackoverflow.com/a/11853075/739436
स्टेलियन

1
मैंने अपने होम निर्देशिका में इस विधि का उपयोग केवल अपने .bashrc और .bash_history को ट्रैक करने के लिए *किया है !.bash*। इसके बाद
.itignore

1
आपको *.*खिड़कियों पर आवश्यकता हो सकती है - @Smaranjit Maiti
मार्टिन कैपोडिसी

13

इसे प्राप्त करने का सबसे अच्छा समाधान

बनाने के .gitignoreभंडार में फ़ाइल root, और यदि आप केवल शामिल करना चाहते हैं .cआप के लिए लाइनों के नीचे जोड़ने की जरूरत है फ़ाइल तो .gitignoreफ़ाइल

*.*
!*.c

इसमें .cनिर्देशिका से सभी फ़ाइल और पुनरावृत्ति से उपनिर्देशिका शामिल होगी ।

का उपयोग करते हुए

*
!*.c

गिट के सभी संस्करण पर काम नहीं करेगा।

पर परीक्षण किया गया

git संस्करण 2.12.2.windows.2


2
हाँ, मेरे पास यही समस्या *थी, और इसका उपयोग करना था *.*। यह विंडोज पर gitbash और git संस्करण 2.9.0.windows.1 का उपयोग कर रहा है
मार्टिन कैपोडिसी

2

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

# Ignore everything under "directory"
directory/*
# But don't ignore "another_directory"
!directory/another_directory
# But ignore everything under "another_directory"
directory/another_directory/*
# But don't ignore "file_to_be_staged.txt"
!directory/another_directory/file_to_be_staged.txt

0

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

+ .git
|    (...)
+ bin
|    my_exe.exe
|    my_output.txt
+ src
     some_file.c
     some_file.h 

... और फिर केवल src/मेरे भंडार में सामान जोड़ें और bin/पूरी तरह से अनदेखा करें ।

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