केवल अनट्रैक फ़ाइलें जोड़ना


168

Git में मुझे अविश्वसनीय रूप से उपयोगी कमांड्स में से एक है, git add -uलेकिन सब कुछ लेकिन अनट्रैक की गई फ़ाइलों को इंडेक्स में फेंकना। क्या इसका उलटा है? पिछले कुछ महीनों में, मैंने अक्सर अपने आप को एक ऐसी स्थिति में पाया है जहाँ मैंने अंतःक्रियात्मक रूप से सूचकांक में कुछ अपडेट जोड़े हैं और मैं प्रतिबद्ध करने से पहले उस अनुक्रमणित फ़ाइल के सभी जोड़ना चाहता हूँ।

क्या व्यक्तिगत रूप से पहचान किए बिना केवल अनुक्रमणित फ़ाइलों को अनुक्रमणित करने का कोई तरीका है ? मुझे डॉक्स में कुछ भी स्पष्ट नहीं दिख रहा है, लेकिन शायद मुझे यह याद आ रहा है?

धन्यवाद।


1
"सब कुछ लेकिन अनुत्तरित फ़ाइलों को सूचकांक में फेंकने" के बारे में, .gitignoreविशेष रूप से उस उद्देश्य के लिए इंजीनियर है, न कि git add -u
पचेरियर

इसके अलावा, क्या आप वर्तमान में ट्रैक किए गए सभी को हटाते हुए अनकैप्ड फ़ाइलों को जोड़ने के लिए कह रहे हैं, या क्या आप वर्तमान में ट्रैक किए गए लोगों के शीर्ष पर अनट्रैक की गई फ़ाइलों को जोड़ने के लिए कह रहे हैं (सब कुछ ट्रैक किया हुआ)?
पचेरियर

जवाबों:


236

इसके साथ आसान है git add -i। टाइप करें a("अनट्रैकड जोड़ें"), फिर *("सभी" के लिए), फिर q(छोड़ने के लिए) और आपका काम हो गया।

एक ही आदेश के साथ करने के लिए: echo -e "a\n*\nq\n"|git add -i


4
मैं उम्मीद कर रहा था कि कुछ कम, अच्छी तरह से, इंटरैक्टिव था, लेकिन यह निश्चित रूप से फ़ाइल से बेहतर है। :-)
रोब विल्करसन

34
echo -e "a\n*\nq\n"|git add -i
Mat

@ मेरा धन्यवाद है तो पूरा कमांड है ----> git ऐड -ia * q ??
BKSpurgeon

Argument list too long... बहुत करीब!
शिमोन

1
मेरे लिए २.२१.० के साथ २.२.० था, git add -iतब अनट्रेंड 4को जोड़ने के *लिए तब सभी के qलिए छोड़ दिया गया था
हैरी बी

36

git ls-files -o --exclude-standard अनट्रैक की गई फ़ाइलें देता है, ताकि आप नीचे जैसा कुछ कर सकें (या इसमें कोई अन्य नाम जोड़ें):

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

1
उर्फ गौ = "git ls-files -o --exclude-standard | xargs -i git add '{}" मेरे लिए काम करता है
Stephan

git ls-files --help काफी उपयोगी रीड है: -o, --others Show other (i.e. untracked) files in the output
यहोशू कुंजमैन

15

ठीक वही नहीं जो आप ढूंढ रहे हैं, लेकिन मुझे यह काफी मददगार लगा है:

git add -AN

सूचकांक में सभी फ़ाइलों को जोड़ देगा, लेकिन उनकी सामग्री के बिना। अब अनट्रैक की गई फ़ाइलें मानो ट्रैक की गई हैं। उनकी सामग्री को प्रदर्शित किया जाएगा git diff, और आप इसके साथ अंतःक्रियात्मक रूप से जोड़ सकते हैं git add -p


यह वही है जो मैं देख रहा था - git commit -pसाथ ही नई फ़ाइलों के माध्यम से चलने की अनुमति देता है ।
नित्सुज्री

11

आप इसे अपनी ~ / .gitconfig फ़ाइल में जोड़ सकते हैं:

[alias]
    add-untracked = !"git status --porcelain | awk '/\\?\\?/{ print $2 }' | xargs git add"

फिर, कमांडलाइन से, बस चलाएँ:

git add-untracked

मुझे यह दृष्टिकोण पसंद है, लेकिन यह फ़ाइल नाम में रिक्त स्थान को संभालता नहीं है।
पॉल कोकोली

9

लोगों ने आउटपुट को पाइप करने का सुझाव दिया git ls-filesहै, git addलेकिन यह उन मामलों में विफल हो रहा है जहां सफेद स्थान या ग्लोब वर्ण जैसे फ़ाइल नाम हैं *

उपयोग करने का सुरक्षित तरीका होगा:

git ls-files -o --exclude-standard -z | xargs -0 git add

जहाँ गेट टर्मिनेटर -zका उपयोग करने के लिए git बताता है \0और -0xargs को समान बताता है। इस दृष्टिकोण का एकमात्र नुकसान यह है कि -0विकल्प गैर-मानक है, इसलिए केवल कुछ संस्करण xargsइसका समर्थन करते हैं।


6

git ls-filesवर्तमान निर्देशिका में फ़ाइलों को सूचीबद्ध करता है। यदि आप पेड़ में कहीं से भी अनटैक की गई फ़ाइलों को सूचीबद्ध करना चाहते हैं, तो यह बेहतर काम कर सकता है:

git ls-files -o --exclude-standard $(git rev-parse --show-toplevel)

पेड़ में सभी अनुपयोगी फ़ाइलों को जोड़ने के लिए:

git ls-files -o --exclude-standard $(git rev-parse --show-toplevel) | xargs git add

6

मैंने यह कोशिश की और यह काम किया:

git stash && git add . && git stash pop

git stashकेवल सभी संशोधित ट्रैक किए गए फ़ाइलों को अलग-अलग स्टैक में डाल देगा, फिर फ़ाइलों पर छोड़ दी गई फ़ाइलों को अनट्रैक किया गया है। फिर आवश्यकता के अनुसार git add .सभी फ़ाइलों को अनट्रैक की गई फ़ाइलों को स्टेज करेगा। आखिरकार, स्टैक से सभी संशोधित फ़ाइलों को वापस करने के लिएgit stash pop


0

यदि आपके पास हज़ारों अनटैक की गई फ़ाइलें हैं (यूजी, नहीं पूछें) तो git add -iजोड़ते समय काम नहीं करेगा *। आपको एक त्रुटि बताते हुए मिलेगा Argument list too long

यदि आप भी विंडोज पर हैं (# 2 :-) से न पूछें और सभी अनुपलब्ध फ़ाइलों को जोड़ने के लिए PowerShell का उपयोग करने की आवश्यकता है, तो आप इस आदेश का उपयोग कर सकते हैं:

git ls-files -o --exclude-standard | select | foreach { git add $_ }

एक और गाढ़ा संस्करण:git ls-files -o --exclude-standard | % { git add $_ }
15

0

यहाँ अच्छी युक्तियों के बहुत सारे, लेकिन Powershell के अंदर मुझे यह काम करने के लिए नहीं मिला।

मैं एक .NET डेवलपर हूं और हम अभी भी मुख्य रूप से Windows OS का उपयोग करते हैं क्योंकि हमने .Net कोर और क्रॉस प्लेटफॉर्म का उपयोग इतना अधिक नहीं किया है, इसलिए Git के साथ मेरा हर रोज़ उपयोग एक विंडोज़ वातावरण में होता है, जहाँ उपयोग किया जाने वाला शेल अधिक बार होता है और बैश नहीं।

Git रिपॉजिटरी में अनटैक की गई फ़ाइलों को जोड़ने के लिए एक अलियास फ़ंक्शन बनाने के लिए निम्नलिखित प्रक्रिया का पालन किया जा सकता है।

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

नोटपैड $ प्रोफ़ाइल

अब इस पॉवर्सशेल विधि को जोड़ें:

function AddUntracked-Git() {
 &git ls-files -o --exclude-standard | select | foreach { git add $_ }
}

$ प्रोफ़ाइल फ़ाइल को सहेजें और इसे Powershell में पुनः लोड करें। इसके बाद अपनी $ प्रोफ़ाइल फ़ाइल को फिर से लोड करें: $ प्रोफ़ाइल

यह * nix वातावरण IMHO में स्रोत कमांड के समान है।

तो अगली बार जब आप डेवलपर हैं, तो Git repo के खिलाफ Windows में Powershell का उपयोग कर रहे हैं और अपने द्वारा उपयोग की जा सकने वाली फ़ाइलों को शामिल करना चाहते हैं:

AddUntracked-Git

यह पॉवरशेल कन्वेंशन का अनुसरण करता है जहां आपके पास क्रिया-संज्ञाएं हैं।


0

जोड़ देना। (इस निर्देशिका की सभी फाइलें जोड़ें)

git add -all (सभी निर्देशिकाओं में सभी फाइलें जोड़ें)

git add -N लिस्टिंग के लिए मददगार हो सकता है जो बाद के लिए ...



-3

सभी अनटैक की गई फ़ाइलों को जोड़ने के लिए git कमांड है

git ऐड-ए

यदि आप विभिन्न उपलब्ध विकल्पों के बारे में अधिक जानकारी प्राप्त करना चाहते हैं, तो आप कमांड टाइप कर सकते हैं

git add -i

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

$ git ऐड-आई चेतावनी: LF को README.txt में CRLF द्वारा प्रतिस्थापित किया जाएगा। फ़ाइल की अपनी कार्यशील निर्देशिका में इसकी मूल पंक्ति अंत होगी। चेतावनी: LF को CRLF द्वारा package.json में बदल दिया जाएगा।

* कमांड्स * 1: स्टेटस 2: अपडेट 3: रिवर्ट 4: अनटैक 5 जोड़ें: पैच 6: 6: 7: 8 छोड़ें: अब क्या> मदद

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