जवाबों:
यह उत्तर केवल Git संस्करण 1.x पर लागू होता है । Git संस्करण 2.x के लिए, अन्य उत्तर देखें।
सारांश:
git add -Aसभी परिवर्तन चरण
git add .हटाए बिना , नई फ़ाइलों और संशोधनों को चरणबद्ध करता है
git add -uनई फ़ाइलों के बिना , संशोधनों और विलोपन को चरणबद्ध करता है
विवरण:
git add -Aके बराबर है git add .; git add -u।
इसके बारे git add .में महत्वपूर्ण बात यह है कि यह काम करने वाले पेड़ को देखता है और उन सभी परिवर्तनों को चरणबद्ध परिवर्तनों में जोड़ता है यदि वे या तो बदले हुए हैं या नए हैं और उन्हें नजरअंदाज नहीं किया गया है, तो यह किसी भी 'आरएम' क्रिया को मंचित नहीं करता है।
git add -uपहले से ही ट्रैक की गई सभी फ़ाइलों को देखता है और यदि वे अलग हैं या यदि उन्हें हटा दिया गया है तो उन फ़ाइलों में परिवर्तन को चरणबद्ध करता है। यह किसी भी नई फाइल को नहीं जोड़ता है, यह केवल पहले से ही ट्रैक की गई फ़ाइलों में परिवर्तन करता है।
git add -A उन दोनों को करने के लिए एक आसान शॉर्टकट है।
आप कुछ इस तरह से मतभेदों का परीक्षण कर सकते हैं (ध्यान दें कि Git संस्करण 2.x के लिए आपका आउटपुट अलग git add . git status होगा ):
git init
echo Change me > change-me
echo Delete me > delete-me
git add change-me delete-me
git commit -m initial
echo OK >> change-me
rm delete-me
echo Add me > add-me
git status
# Changed but not updated:
# modified: change-me
# deleted: delete-me
# Untracked files:
# add-me
git add .
git status
# Changes to be committed:
# new file: add-me
# modified: change-me
# Changed but not updated:
# deleted: delete-me
git reset
git add -u
git status
# Changes to be committed:
# modified: change-me
# deleted: delete-me
# Untracked files:
# add-me
git reset
git add -A
git status
# Changes to be committed:
# new file: add-me
# modified: change-me
# deleted: delete-me
git add -A -pकाम नहीं करता है क्योंकि कोई भी उम्मीद नहीं करेगा (अनटैक की गई फ़ाइलों के बारे में पूछें)
git add -A :/याgit add -A .
git add -uबन गया git add -u :/है, जिससे आपको कुछ निर्देशिकाओं के लिए, :/पूरे पेड़ को संभालने की अनुमति मिलती है ।
git add -uया की आवश्यकता होगीgit add . ऐसा करने से अतिरिक्त मानसिक कर के लिए लेखांकन के बाद भी उसका जीवन आसान हो जाता है ताकि यह सुनिश्चित हो सके कि कोई सिंक समस्याएं नहीं हैं? मुझे आश्चर्य है कि Git add -uदो अलग-अलग कमांडों में विभाजित नहीं होता है add -u1और add-u2जिससे एक फाइलों के लिए काम करता है जो अंकों के साथ शुरू होता है और दूसरा गैर-अंकों से शुरू होने वाली फाइलों के लिए
यहाँ त्वरित समझ के लिए एक तालिका है:
Git संस्करण 1.x :

Git संस्करण 2.x :

लंबे रूप के झंडे:
git add -A के बराबर है git add --allgit add -u के बराबर है git add --updateआगे की पढाई:
git diff-files -z --diff-filter=M --name-only | xargs -0 git addकेवल संशोधित फ़ाइलों को जोड़ने के लिए उपयोग कर सकते हैं , लेकिन नई फाइलें या डिलीट नहीं।
git add .केवल नई फाइलें जोड़ता है जो वर्तमान पथ पर हैं। यानी यदि आपके पास एक नई निर्देशिका है ../foo, git add -Aतो इसे चरणबद्ध करेंगे, git add .नहीं करेंगे।
git add .समतुल्य है git add -A ., जो कि बराबर हैgit add "*"
Git 2.0 केgit add -Agit add .git add -A . साथ , डिफ़ॉल्ट है: बराबर है ।
git add <path>"git add -A <path>" अब के समान है , ताकि "git add dir/" निर्देशिका से हटाए गए रास्तों को नोटिस करेगा और हटाने को रिकॉर्ड करेगा।
Git के पुराने संस्करणों में, "git add <path>" ने निष्कासन को अनदेखा कर दिया है।यदि आप वास्तव में चाहते हैं तो आप
git add --ignore-removal <path>केवल जोड़े गए या संशोधित मार्गों को जोड़ने के लिए " " कह सकते हैं<path>।
git add -Aकी तरह है git add :/( शीर्ष गिट रेपो फ़ोल्डर से सब कुछ जोड़ें )।
ध्यान दें कि git 2.7 (Nov. 2015) आपको " :" नाम के एक फ़ोल्डर को जोड़ने की अनुमति देगा !
देखें 29abb33 प्रतिबद्ध (25 अक्टू 2015) द्वारा Junio सी Hamano ( gitster) ।
ध्यान दें कि git 2.0 (Q1 या Q2 2014) शुरू करते समय git add ., काम करने वाले पेड़ के भीतर (वर्तमान पथ के बारे में ) बात करते समय , आपको .अन्य git addकमांड में भी ' ' का उपयोग करना चाहिए ।
इसका मत:
""
git add -A ."के बराबर हैgit add .; git add -u ."
(नोट के लिए अतिरिक्त ' .' git add -Aऔर git add -u)
क्योंकि git add -Aया पूरे काम करने वाले पेड़git add -u पर ही (जीआईटी 2.0 शुरू करने) संचालित होता है , न कि केवल वर्तमान पथ पर।
वे कमांड Git 2.0 में पूरे पेड़ पर "
git commit -a" और अन्य कमांड के साथ संगति के लिए काम करेंगे । क्योंकि "git add -u" के रूप में व्यवहार करें " " बनाने के लिए कोई तंत्र नहीं होगाgit add -u ., यह उन लोगों के लिए महत्वपूर्ण है जोgit add -u"(बिना pathspec) के लिए उपयोग किए जाते हैं" केवल स्पष्ट रूप से कहने के लिए अपनी उंगलियों का प्रशिक्षण शुरू करने के लिए वर्तमान उपनिर्देशिका में पथों के लिए सूचकांक को अद्यतन करना।git add -u ."जब वे इसका मतलब Git 2.0 के आने से पहले।एक चेतावनी तब जारी की जाती है जब ये कमांड बिना किसी पाथस्पेक्ट के चलते हैं और जब आपके पास वर्तमान निर्देशिका के बाहर स्थानीय परिवर्तन होते हैं , क्योंकि ऐसी स्थिति में Git 2.0 का व्यवहार आज के संस्करण से अलग होगा।
से चार्ल्स 'निर्देश , मेरे प्रस्तावित समझ का परीक्षण इस प्रकार किया जाएगा के बाद:
# For the next commit
$ git add . # Add only files created/modified to the index and not those deleted
$ git add -u # Add only files deleted/modified to the index and not those created
$ git add -A # Do both operations at once, add to all files to the index
यह ब्लॉग पोस्ट यह समझने में भी सहायक हो सकती है कि उन स्थितियों को किस स्थिति में लागू किया जा सकता है: हटाए गए फ़ाइलों को आपके गिट वर्किंग डायरेक्टरी से हटाना ।
जीआईटी 2.0 ( 2014-05-28 ) के साथ चीजें बदल गईं :
-A अब डिफ़ॉल्ट है--ignore-removal।git add -uऔर git add -Aकमांड लाइन पर पथों के बिना एक उपनिर्देशिका पूरे पेड़ पर काम करती है।तो Git 2 के लिए इसका उत्तर है:
git add .और git add -A .वर्तमान निर्देशिका में नई / संशोधित / हटाई गई फ़ाइलें जोड़ेंgit add --ignore-removal . वर्तमान निर्देशिका में नई / संशोधित फाइलें जोड़ता हैgit add -u . वर्तमान निर्देशिका में संशोधित / हटाए गए फ़ाइलों को जोड़ता हैएक अधिक आसुत त्वरित उत्तर:
git add -A
git add .
git add -u
git add :/ +git add -u :/
में Git 2.x :
आप सीधे पर स्थित हैं, तो कार्यशील निर्देशिका , तो git add -Aऔर git add .अंतर के बिना काम करते हैं।
यदि आप किसी भी उपनिर्देशिका में हैं कार्यशील निर्देशिका के , git add -Aतो संपूर्ण कार्यशील निर्देशिका से सभी फ़ाइलें git add .जोड़ देंगे , और आपकी वर्तमान निर्देशिका से फ़ाइलें जोड़ देंगे ।
और बस यही।
मुझे उम्मीद है कि इससे कुछ और स्पष्टता आ सकती है।
!The syntax is
git add <limiters> <pathspec>
! Aka
git add (nil/-u/-A) (nil/./pathspec)
लिमर्स -यू या -ए या नील हो सकता है।
Pathspec एक फ़ाइलपथ या बिंदु हो सकता है, '।' वर्तमान निर्देशिका को इंगित करने के लिए।
Git 'कैसे जोड़ता है' के बारे में महत्वपूर्ण पृष्ठभूमि ज्ञान:
-Aहै जब तक कि यह भी निर्दिष्ट नहीं किया जाता है। डॉट वर्तमान निर्देशिका के लिए कड़ाई से संदर्भित करता है - यह ऊपर और नीचे पाए गए मार्गों को छोड़ देता है।अब, उस ज्ञान को देखते हुए, हम उपरोक्त उत्तर लागू कर सकते हैं।
सीमाएँ इस प्रकार हैं।
-u= --update= ट्रैक की गई फ़ाइलों के लिए सबसेट => जोड़ें = नहीं; परिवर्तन = हाँ; हटाना = हाँ। => यदि आइटम को ट्रैक किया जाता है।-A= --all(ऐसा नहीं है -a, जो सिंटैक्स त्रुटि देता है) = सभी अनट्रैक / ट्रैक की गई फ़ाइलों का सुपरसेट, जब तक कि 2.0 से पहले गिट में, जिसमें अगर डॉट फिल्स्पेक दिया जाता है, तो केवल उस विशेष फ़ोल्डर को माना जाता है। => यदि आइटम पहचाना जाता है, git add -Aतो उसे ढूंढकर जोड़ देगा।पैथस्पेक इस प्रकार है।
git add -A .
git add -u .
अंत में, मेरी नीति है:
git status।.gitignore फाइल रखें ताकि आम तौर पर केवल ब्याज की फाइलें ही बिना पढ़े और / या बिना मान्यता प्राप्त हों।दोनों git add .औरgit add -A Git के नए संस्करण में सभी नए, संशोधित और नष्ट कर दिया फ़ाइलों को मंच होगा।
अंतर यह है कि git add -Aचरणों की फाइलें "उच्च, वर्तमान और उपनिर्देशिका" में हैं जो आपके काम करने वाले गिट रिपॉजिटरी से संबंधित हैं। लेकिन git add .वर्तमान निर्देशिका और उपनिर्देशिकाओं में केवल चरणों की फ़ाइलों का पालन करना ( नहीं) कि बाहर पड़ी फाइलें, अर्थात् उच्च निर्देशिकाएं)।
यहाँ एक उदाहरण है:
/my-repo
.git/
subfolder/
nested-file.txt
rootfile.txt
यदि आपकी वर्तमान वर्किंग डायरेक्टरी है /my-repo, और आप करते हैं rm rootfile.txt, तो उसके cd subfolderबाद डिलीट की गई फाइल को स्टेज नहींgit add . करेंगे । लेकिन कर निश्चित रूप से इस परिवर्तन को कोई फर्क नहीं पड़ता कि आप कहाँ से कमांड करते हैं।git add -A
-Aविकल्प कहते हैं, संशोधित करता है और काम कर पेड़ से मिलान करने के सूचकांक प्रविष्टियों को हटा।
गिट 2 में -A विकल्प अब डिफ़ॉल्ट है।
जब एक .जोड़ा जाता है जो आपके द्वारा वर्तमान में Git प्रलेखन के अनुसार, उस निर्देशिका के अद्यतन के दायरे को सीमित करता है
यदि नही
<pathspec>-एक विकल्प का उपयोग किए जाने पर दिया जाता है, तो पूरे काम करने वाले पेड़ की सभी फाइलें अपडेट की जाती हैं (Git के पुराने संस्करण वर्तमान निर्देशिका और उसके उपनिर्देशिकाओं में अद्यतन को सीमित करने के लिए उपयोग किए जाते हैं)।
एक चीज जो मैं जोड़ूंगा वह यह है कि यदि --interactiveया -pमोड का उपयोग किया जाता है तो git addव्यवहार करेंगे जैसे कि अपडेट ( -u) ध्वज का उपयोग किया गया था और नई फाइलें नहीं जोड़ रहा था।
git add *?