git - "गिट एड-ए" और "गिट एड" के बीच अंतर।




git-add (7)

-ए विकल्प काम करने वाले पेड़ से मेल खाने के लिए इंडेक्स प्रविष्टियों को जोड़ता है, संशोधित करता है और हटा देता है।

जीआईटी 2 में -A विकल्प अब डिफ़ॉल्ट है।

जब ए . गिट दस्तावेज के अनुसार, उस निर्देशिका में अद्यतन के दायरे को सीमित करता है, जिसमें आप वर्तमान में निर्देशिका में हैं

यदि कोई <pathspec> दिया जाता है जब -ए विकल्प का उपयोग किया जाता है, तो पूरे काम करने वाले पेड़ में सभी फ़ाइलें अपडेट की जाती हैं (गिट के पुराने संस्करण वर्तमान निर्देशिका और इसकी उपनिर्देशिकाओं को अद्यतन को सीमित करने के लिए उपयोग किए जाते हैं)।

एक चीज जो मैं --interactive वह यह है कि यदि --interactive या -p मोड का उपयोग किया जाता है तो गिट एड व्यवहार करेगा जैसे कि अपडेट ( -u ) ध्वज का उपयोग किया गया था और नई फाइलें नहीं --interactive

कमांड git add [--all|-A] git add . समान होता प्रतीत होता है git add . । क्या ये सही है? यदि नहीं, तो वे अलग कैसे होते हैं?


अंततः मुझे लगता है कि मुझे यह मिल गया है, आप सभी को बहुत धन्यवाद। मुझे उम्मीद है कि यह कुछ और स्पष्टता जोड़ सकता है।

!The syntax is
git add <limiters> <pathspec>
! Aka
git add (nil/-u/-A) (nil/./pathspec)

सीमाएं -यू या -ए या शून्य हो सकती हैं।

पथस्पेक फ़ाइलपैथ या डॉट हो सकता है, '।' वर्तमान निर्देशिका को इंगित करने के लिए।

गिट 'जोड़ता है' के बारे में महत्वपूर्ण पृष्ठभूमि ज्ञान।

  • अदृश्य फ़ाइलें, जो डॉट के साथ उपसर्ग करते हैं, (dotfiles) कभी भी गिट द्वारा स्वचालित रूप से पहचाने जाते हैं। उन्हें कभी भी 'अनचाहे' के रूप में सूचीबद्ध नहीं किया जाता है।
  • खाली फ़ोल्डरों को गिट द्वारा कभी जोड़ा नहीं जाता है। उन्हें कभी भी 'अनचाहे' के रूप में सूचीबद्ध नहीं किया जाता है। (एक वर्कअराउंड ट्रैक की गई फ़ाइलों को एक खाली फ़ाइल, संभवतः अदृश्य, जोड़ना है।)
  • गिट स्थिति उपफोल्डर जानकारी, यानी अनचाहे फ़ाइलों को प्रदर्शित नहीं करेगी, जब तक कि उस सबफ़ोल्डर में कम से कम एक फ़ाइल ट्रैक न हो। इस तरह से पहले, गिट पूरे फ़ोल्डर को दायरे से बाहर मानता है, एक ला 'खाली'। यह ट्रैक किए गए सामानों से खाली है।
  • एक फाइलपेक = '।' निर्दिष्ट (डॉट), या वर्तमान निर्देशिका, रिकर्सिव नहीं है जब तक- ए भी निर्दिष्ट नहीं है। डॉट वर्तमान निर्देशिका के लिए सख्ती से संदर्भित करता है - यह ऊपर और नीचे पाए गए पथ को छोड़ देता है।

अब, उस ज्ञान को देखते हुए, हम ऊपर दिए गए उत्तरों को लागू कर सकते हैं।

निम्नानुसार सीमाएं हैं।

  • -u = --update = ट्रैक की गई फ़ाइलों के लिए सबसेट => जोड़ें = नहीं; बदलें = हां; हटाएं = हां। => अगर आइटम ट्रैक किया गया है।
  • -A = --all (ऐसा कोई नहीं, जो वाक्यविन्यास त्रुटि देता है) = सभी अनचाहे / ट्रैक की गई फ़ाइलों का सुपरसेट, जब तक कि गिट <2.0 में, जहां डॉट फाइलपेक दिया जाता है, तो केवल उस विशेष फ़ोल्डर को माना जाता है। => अगर आइटम पहचाना जाता है, तो गिट ऐड-ए इसे पायेगा और इसे जोड़ देगा।

पथस्पेक निम्नानुसार है।

  • गिट <2.0 में, दो सीमाओं (अद्यतन और सभी) के लिए, नया डिफ़ॉल्ट वर्तमान पथ (गिट <= 1.9) के बजाय पूरे काम करने वाले पेड़ पर काम करना है,
  • हालांकि, v2.0 में, ऑपरेशन वर्तमान पथ तक सीमित हो सकता है: केवल स्पष्ट बिंदु प्रत्यय जोड़ें (जो गिट <= 1.9 में भी मान्य है);

git add -A .

git add -u .

अंत में, मेरी नीति है;

  • 1. किसी भी शिकारी / फ़ाइलों को जोड़ने के लिए गिट स्थिति में जिम्मेदार माना जाता है।
  • 1 ए। अगर किसी भी आइटम गायब हैं, अदृश्य फ़ाइलों / फ़ोल्डर्स के कारण, उन्हें अलग से जोड़ें।
  • 2. एक अच्छा गिटिग्नोर रखें ताकि आम तौर पर केवल ब्याज की फाइलें अनचाहे हों और / या अपरिचित हों।
  • 3. रेपो के शीर्ष स्तर से, सभी आइटम जोड़ने के लिए "गिट एड-ए"। यह गिट के सभी संस्करणों में काम करता है।
  • 4. वांछित अगर सूचकांक से किसी वांछित आइटम हटा दें।
  • 6. अगर कोई बड़ी बग है, तो पूरी तरह से इंडेक्स को साफ़ करने के लिए 'गिट रीसेट' करें।

तो उपरोक्त चार्ल्स निर्देशों से, मेरी प्रस्तावित समझ का परीक्षण करने के बाद निम्नानुसार होगा:

# For the next commit
$ git add .   # add to index only files created/modified and not those deleted
$ git add -u  # add to index only files deleted/modified and not those created
$ git add -A  # do both operation at once, add to index all files

यह लिंक यह समझने में सहायक भी हो सकता है कि उन स्थितियों को किस स्थिति में लागू किया जा सकता है: अपनी गिट कार्य निर्देशिका से हटाई गई फ़ाइलों को हटा रहा है


त्वरित समझ के लिए तालिका यहां दी गई है:

गिट संस्करण 1.x :

गिट संस्करण 2.x :

लंबे फार्म झंडे:

  • git add -A बराबर है git add -A git add --all
  • git add -u के बराबर है

आगे की पढाई:


गिट 2.0 के साथ , git add -A डिफ़ॉल्ट है: git add . git add -A . बराबर है git add -A .

git add <path> " git add -A <path> " जैसा ही है, ताकि " git add dir/ " निर्देशिका से हटाए गए पथों को नोटिस करेगा और हटाने को रिकॉर्ड करेगा।
गिट के पुराने संस्करणों में, " git add <path> " निकासी को अनदेखा करने के लिए उपयोग किया जाता है।

यदि आप वास्तव में करना चाहते हैं, तो आप <path> में केवल जोड़े गए या संशोधित पथ जोड़ने के लिए " git add --ignore-removal <path> " कह सकते हैं।

git add की तरह है git add :/ ( शीर्ष गिट रेपो फ़ोल्डर से सब कुछ जोड़ें )।
ध्यान दें कि गिट 2.7 (नवंबर 2015) आपको " : " नामक फ़ोल्डर जोड़ने की अनुमति देगा!
जूनियो सी gitster ( gitster ) द्वारा 2 9abb33 (25 अक्टूबर 2015) प्रतिबद्ध देखें।

ध्यान दें कि git add . बारे में बात करते समय गिट 2.0 (क्यू 1 या क्यू 2 2014) शुरू करना git add . (काम करने वाले पेड़ के भीतर वर्तमान पथ), आपको ' 'अन्य git add में भी कमांड git add

इसका मत:

" git add -A . " " git add .; git add -u . " के बराबर है git add .; git add -u .

( git add -A और git add -u लिए अतिरिक्त ' . ' पर ध्यान दें)

चूंकि git add -A या git add -u पूरे काम करने वाले पेड़ पर (केवल गिट 2.0 शुरू करना) संचालित करेगा, न केवल वर्तमान पथ पर।

वे आदेश " git commit -a " और अन्य आदेशों के साथ स्थिरता के लिए गिट 2.0 में पूरे पेड़ पर काम करेंगे। क्योंकि " git add -u " को " git add -u " के रूप में व्यवहार करने के लिए कोई तंत्र नहीं होगा, इसलिए उन लोगों के लिए महत्वपूर्ण है जो " git add -u यू" (पथस्पेक के बिना) के लिए केवल पथ के लिए इंडेक्स को अपडेट करते हैं वर्तमान उपनिर्देशिका में " git add -u . " स्पष्ट रूप से कहने के लिए अपनी अंगुलियों को प्रशिक्षण देना शुरू करें जब उनका मतलब गिट 2.0 आने से पहले होता है।

एक चेतावनी जारी की जाती है जब इन आदेशों को पथस्पेक के बिना चलाया जाता है और जब आपके पास वर्तमान निर्देशिका के बाहर स्थानीय परिवर्तन होते हैं , क्योंकि गिट 2.0 में व्यवहार इस तरह की स्थिति में आज के संस्करण से अलग होगा।


git add . git add -A . बराबर है git add -A . केवल वर्तमान और बच्चों के फ़ोल्डर्स से इंडेक्स में फ़ाइलों को जोड़ता है।

git add -A काम करने वाले पेड़ में सभी फ़ोल्डर्स से इंडेक्स में फाइलें जोड़ता है।

पीएस: जानकारी गिट 2.0 से संबंधित है।


यह उत्तर केवल गिट संस्करण 1.x पर लागू होता है। गिट संस्करण 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 . बारे में महत्वपूर्ण बिंदु git add . यह है कि यह काम करने वाले पेड़ को देखता है और उन सभी पथों को चरणबद्ध परिवर्तनों में जोड़ता है यदि वे या तो बदल गए हैं या नए हैं और अनदेखा नहीं हैं, तो यह किसी भी 'आरएम' कार्यों को नहीं लेता है।

git add -u सभी पहले से ट्रैक की गई फ़ाइलों को देखता है और उन फ़ाइलों में परिवर्तनों को चरणबद्ध करता है यदि वे अलग हैं या यदि उन्हें हटा दिया गया है। यह कोई नई फाइल नहीं जोड़ता है, यह केवल पहले से ट्रैक की गई फ़ाइलों में बदलावों को चरणबद्ध करता है।

git add -A उन दोनों को करने के लिए एक आसान शॉर्टकट है।

आप इस तरह के कुछ के साथ मतभेदों का परीक्षण कर सकते हैं (ध्यान दें कि गिट संस्करण 2.x के लिए आपके आउटपुट git add . लिए आउटपुट 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