2013-04-02 9 views
11

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

प्रत्येक फ़ाइल को अलग से जोड़ने के अलावा।

यह मेरे मामले में यह करने के लिए बिल्कुल जरूरी नहीं है, मेरे लिए असली सवाल का जवाब यहां है: How to make git-diff and git log ignore new and deleted files?

है, नई फ़ाइलें पर diff नहीं दिखाते, तो मैं यह अधिक क्योंकि मैं पूछ रहा हूँ कहीं भी इसका जवाब नहीं मिला।

+0

कि के लिए उपयोग के मामले में क्या है? क्योंकि मुझे नहीं लगता कि फाइलें जोड़ने और मौजूदा फाइलों में प्रासंगिक परिवर्तन जोड़ने के लिए यह कैसे समझ में आएगा और यदि बदलाव किए जाने वाले बदलावों से प्रासंगिक नहीं हैं तो संभवतः कुछ अन्य मानदंडों पर हाथ उठाए जाने की आवश्यकता है। –

+0

मेरा वर्कफ़्लो मैं प्रत्येक फ़ाइल को diff के साथ जांचता हूं और फिर मैं इसे "रास्ते से बाहर निकालने" के लिए जोड़ता हूं। तो गिट diff अब केवल उन फ़ाइलों को दिखाता है जो जांचने के लिए मेरे लिए छोड़े गए हैं। तो मैं उन्हें रास्ते से बाहर निकालने के लिए नई फाइलें जोड़ना (मानना ​​या उन्हें "ठीक" मानना) जोड़ना चाहता हूं। –

उत्तर

12

शायद

git add $(git ls-files -o --exclude-standard) 

git ls-files आप Git द्वारा प्रबंधित फ़ाइलें, कुछ विकल्पों के आधार पर फ़िल्टर कर सूची की सुविधा देता है। इस मामले में -o फिल्टर यह केवल "दूसरों (अर्थात ट्रैक न किए गए फ़ाइलें)" को दिखाने के लिए

$(...) बयान git add लिए एक तर्क के रूप कि आदेश की वापसी मान से गुजरता है।

+0

आपको अनदेखी फ़ाइलों को फिर से बाहर करने की आवश्यकता होगी, अन्यथा 'गिट एड' शिकायत करेगा। जैसे 'git ls-files -o' कॉल' के लिए '- exclude-standard' ध्वज का उपयोग करके। –

+0

ठीक है, उसे नहीं पता था। धन्यवाद! –

+0

यदि मुझे सही तरीके से याद है, तो यह केवल * शिकायत करता है, आपको बताता है कि यह उन फ़ाइलों को अनदेखा कर देगा और यदि आप वास्तव में उन्हें जोड़ना चाहते हैं, तो आपको '--force' ध्वज का उपयोग करना होगा। फिर भी, कष्टप्रद। –

2

उस Git स्थिति (man git-status(1) देखें) है, जो निम्नलिखित उत्पादन देता है की कमी मोड का उपयोग कर सकते हैं: कम मोड के बिना

:

$ git status -s 
M application/models/membre_model.php 
?? README 
?? application/libraries/Membres_exception.php 

तब:

$ git status 

... 


# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# README 
# application/libraries/Membres_exception.php 
no changes added to commit (use "git add" and/or "git commit -a") 

कम मोड के साथ grep, awk और xarg का उपयोग करके, आप उन फ़ाइलों को जोड़ सकते हैं जहां पहला कॉलम ?? है।

$ git status -s | grep '??' | awk '{ print $2 }' | xargs git add 

और देखते हैं कि यह काम किया:

$ git status 
# On branch new 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: README 
# new file: application/libraries/Membres_exception.php 
+0

अच्छा विचार, हालांकि कोई समस्या है: यदि फ़ाइलपैथ में रिक्त स्थान 'awk' {print $ 2} 'है, तो ऐसे फ़ाइलपैथ का केवल पहला भाग ही होगा। –

+0

इस बारे में कैसे: 'गिट स्थिति -s | grep '??' | अजीब '{प्रिंट सबस्ट्र ($ 0, सूचकांक ($ 0, $ 2))} | xargs गिट जोड़ें ' –

संबंधित मुद्दे