एक ही समय पर Git में कई फाइलें कैसे जोड़ें


120

यह मेरा पहला git उपयोग होगा। मैंने फोल्डर / प्रोजेक्ट (git local repository) में नई फाइलें (बहुत कुछ) जोड़ी हैं।

मैं ऑनलाइन ट्यूटोरियल और फ़ोरम से गुज़रा और देखा कि मैं क्या कर सकता हूँ

git commit -a

इसलिए मैं रिपॉजिटरी के बेस फोल्डर में जाता हूं और ए

sudo git commit -a

लेकिन फिर, कुछ स्क्रीन आते हैं और मुझे एक टिप्पणी जोड़ने के लिए कहते हैं जो मैं करता हूं। मुझे नहीं पता कि कैसे आगे बढ़ना है या बाहर निकलना है। मैं गड़बड़ नहीं करना चाहता इसलिए मैंने ctrl + Z किया और कुछ भी नहीं किया।

क्या आप लोग मेरे द्वारा उपयोग की जाने वाली आज्ञाओं की रूपरेखा तैयार कर सकते हैं?

git commit -a 

तथा

git push?

1
git commit -aआपके लिए प्रतिबद्ध संदेश टाइप करने के लिए एक संपादक को खोलता है। एक संदेश दर्ज करें जिसे आप लॉग के रूप में देखना चाहते हैं और संपादक से बाहर निकलें। यह कमिट पूरा करता है। रिमोट रिपॉजिटरी में अपने बदलावों को आगे बढ़ाते हुए इसका पालन करें git push <remote name> <branch name>जैसे किgit push remote master
भास्कर

3
यह भी ध्यान रखें, आप (और चाहिए नहीं) उपयोग की जरूरत नहीं हैsudo
DAX

उत्तर के लिए धन्यवाद। अगर मैं sudo का उपयोग नहीं करता हूं तो मुझे अनुमति से वंचित त्रुटि मिलती है।
किशोर

2
पहले sudo का उपयोग करने के बाद, आपके पास संभवतः आपके वर्किंग डायरेक्टरी में फाइलें हैं जो अब गलती से रूट के स्वामित्व में हैं। इस बिंदु पर बिना सुडो के अन्य ऑपरेशन करने से अनुमति से वंचित त्रुटि हो जाएगी क्योंकि आप उन फ़ाइलों को रूट के स्वामित्व में नहीं बदल सकते। आपका भंडार थोड़ा गड़बड़ हो सकता है और यह शुरू करने के लिए सबसे अच्छा हो सकता है (और sudo का उपयोग करें)।
ग्रेग हेविगेल

यदि आप सभी फ़ाइलों को जोड़ना चाहते हैं तो आप `git add -a` का उपयोग कर सकते हैं। लेकिन यदि आप कई चयनित फ़ाइलों को जोड़ना चाहते हैं। आप `गिट ऐड -i 'का उपयोग कर सकते हैं। कृपया इस git-scm.com/book/en/v2/Git-Tools-Interactive-Staging देखें । यह आपकी मदद करेगा।
कपिला रणसिंघे

जवाबों:


120

आपके द्वारा किए गए सभी परिवर्तनों को जोड़ने के लिए:

git add .

उन्हें करने के लिए:

git commit -m "MY MESSAGE HERE" # -म संदेश ध्वज है

आप इस तरह से उन चरणों को एक साथ रख सकते हैं:

git commit -a -m "MY MESSAGE HERE"

अपने स्थानीय रिपॉजिटरी से अपने रिमोट रिपॉजिटरी में अपने प्रतिबद्ध परिवर्तनों को धकेलने के लिए:

git push origin master

आपको इसके बाद github के लिए अपना उपयोगकर्ता नाम / पासवर्ड लिखना होगा। यहाँ git का उपयोग करने पर एक अच्छा प्राइमर है। थोड़ा पुराना है, लेकिन यह कवर करता है कि वास्तव में क्या चल रहा है।


क्या -aकमिट से पहले नई (अस्थिर) फाइलें जोड़ेंगे?
सब्रेवॉल्फ़ी

git commit -aके लिए आशुलिपि है git commit --all, हां, यह होगा।
डेक्स

1
$ man git-commitइसके लिए यह शामिल है -a: "स्वचालित रूप से फ़ाइलों को संशोधित और हटाए जाने के लिए कमांड को बताएं, लेकिन जिन नई फ़ाइलों को आपने नहीं बताया है, वे प्रभावित नहीं होते हैं।", इसीलिए मैंने पूछा।
सब्रेवॉल्फ़ी

पूर्णता के लिए एक प्रकार की कई फ़ाइलों को जोड़ने का सबसे आसान तरीका तारांकन का उपयोग कर रहा है, उदाहरण के लिए html उपयोग के लिए "git add * .html"
Inyoka

382

git addआदेश का उपयोग करें , इसके बाद अंतरिक्ष से अलग किए गए फ़ाइलनामों की सूची। यदि अन्य निर्देशिकाओं में, उदाहरण के लिए पथ शामिल करें directory-name/file-name

git add file-1 file-2 file-3

1
केवल फ़ाइल नाम निर्दिष्ट करने से यह त्रुटि मिलती है "घातक: pathspec 'filename.java' किसी भी फाइल से मेल नहीं खाता"। इसके बजाय संपूर्ण फ़ाइल पथ और फ़ाइल नाम निर्दिष्ट करें जैसे 'git add long / path / {file1, file2, ..., filen}'
श्रवण राममूर्ति

4
यह काम नहीं करता है जब फ़ाइल नाम में से एक में git 1.9.5 के साथ एक व्हाट्सएप शामिल है
मैक्सिम हेलेन

हमें इससे "<" और ">" हटाने की आवश्यकता है। यह किसी को भ्रमित करेगा।
सईद एंत्ज़ारी

30

जैसा कि कुछ ने एक संभावित तरीके का उल्लेख किया है, git इंटरैक्टिव स्टेजिंग का उपयोग कर रहा है । यह बहुत अच्छा है जब आपके पास विभिन्न एक्सटेंशन वाली फाइलें होती हैं

$ git add -i
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
  2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb

*** Commands ***
  1: status     2: update      3: revert     4: add untracked
  5: patch      6: diff        7: quit       8: help
What now>

यदि आप दबाते हैं 2 तो enterआपको उपलब्ध होने वाली फ़ाइलों की सूची मिल जाएगी:

What now> 2
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
  2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb
Update>>

अब आपको केवल उन फ़ाइलों की संख्या सम्मिलित करनी है जिन्हें आप जोड़ना चाहते हैं, इसलिए यदि हम जोड़ना चाहते हैं TODOऔर index.htmlहम टाइप करेंगे1,2

Update>> 1,2
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb
Update>>

आप * संख्या से पहले देखते हैं ? इसका मतलब है कि फ़ाइल को जोड़ा गया था।

अब कल्पना करें कि आपके पास 7 फाइलें हैं और आप 7 वें को छोड़कर उन सभी को जोड़ना चाहते हैं? यकीन है कि हम टाइप कर सकते हैं 1,2,3,4,5,6लेकिन 7 के बजाय कल्पना करें कि हमारे पास 16 हैं, जो काफी बोझिल होगा, अच्छी बात यह है कि हमें उन सभी को टाइप करने की आवश्यकता नहीं है क्योंकि हम श्रेणियों का उपयोग करके टाइप कर सकते हैं1-6

Update>> 1-6
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
* 4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
  7:    unchanged        +5/-1 file7.html
Update>>

हम कई श्रेणियों का उपयोग भी कर सकते हैं, इसलिए यदि हम 1 से 3 तक चाहते हैं और 5 से 7 तक हम टाइप करते हैं 1-3, 5-7:

Update>> 1-3, 5-7
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
* 7:    unchanged        +5/-1 file7.html
Update>>

यदि हम टाइप करते हैं -number, तो हम इसका उपयोग अस्थिर फ़ाइलों के लिए भी कर सकते हैं , इसलिए यदि हम फ़ाइल नंबर 1 को अस्थिर करना चाहते हैं , तो हम टाइप करेंगे -1:

Update>> -1
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
* 7:    unchanged        +5/-1 file7.html
Update>>

और जैसा कि आप कल्पना कर सकते हैं कि हम फ़ाइलों की एक श्रृंखला को भी अनस्टेज कर सकते हैं, इसलिए यदि हम -rangeउस श्रेणी की सभी फ़ाइलों को टाइप करते हैं, तो वे अनस्टेज्ड होंगी। यदि हम 5 से 7 तक की सभी फाइलों को अनस्टेज करना चाहते हैं तो हम टाइप करेंगे -5-7:

Update>> -5-7
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
  5:    unchanged        +5/-1 file5.html
  6:    unchanged        +5/-1 file6.html
  7:    unchanged        +5/-1 file7.html
Update>>

2
व्यक्तिगत रूप से मुझे यह पसंद है। जब आपके पास प्रतिबद्ध और अन्य कार्यों के लिए अधिक फाइलें हों तो इसका उपयोग करना आसान है।
कपिला रणसिंघे

एक बार जब आप समाप्त हो जाते हैं, तो आप इंटरैक्टिव स्टेजिंग को कैसे पूरा करते हैं?
अपराह्न

1
@Crparedes एक बार जब आप फ़ाइलों को जोड़ते हैं, यदि आप फिर से एंटर दबाते हैं तो यह मेनू पर वापस चला जाता है, तो आपको 7इंटरेक्टिव स्टेजिंग से निकलने का विकल्प चुनना होगा ।
Fabio Antunes

28

आप इस तरह से कई फाइलों का चयन कर सकते हैं

git add folder/subfolder/*

यह निर्दिष्ट सबफ़ोल्डर में सभी फ़ाइलों को जोड़ देगा। बहुत उपयोगी जब आप फ़ाइलों का एक गुच्छा संपादित करते हैं लेकिन आप उनमें से कुछ को कमिट करना चाहते हैं ...


14

यदि आप किसी दिए गए फ़ोल्डर में कई फ़ाइलों को जोड़ना चाहते हैं तो आप उनका उपयोग करके विभाजित कर सकते हैं {,}। यह लंबे रास्तों को न दोहराने के लिए बहुत बढ़िया है, जैसे

git add long/path/{file1,file2,...,filen}

के बीच रिक्त स्थान नहीं रखने के लिए खबरदार ,


क्या है लंबा / रास्ता / यहाँ? @ एलियूएक्स
ललितकुमार

लंबा / पथ एक बहुत लंबी लंबाई के साथ एक पथ स्ट्रिंग हो सकता है, इसलिए इसका अधिक आरामदायक इस तरह के भाग को दोहराए बिना, cdइसमें नहीं है
एलियक्स

4

जब आप फ़ाइलों को बदलते हैं या रिपॉजिटरी में एक नया जोड़ते हैं तो आपको पहले उन्हें स्टेज करना होगा।

git add <file>

या यदि आप सभी को मंच देना चाहते हैं

git add .

ऐसा करने से आप अपने अगले कमिट में कौन सी फाइलें चाहते हैं, यह बताने के लिए कह रहे हैं। तब आप करते हैं:

git commit -m 'your message here'

तुम इस्तेमाल

git push origin master

जहां मूल दूरस्थ रिपॉजिटरी शाखा है और मास्टर आपकी स्थानीय रिपॉजिटरी शाखा है।


धन्यवाद!। अंतिम कमांड गिट पुश ऑरिजनल मास्टर पर। मैं वास्तव में एक अलग शाखा नाम पर काम कर रहा हूं (जो मास्टर शाखा से बनाया गया था)। तो क्या मुझे अपनी शाखा के नाम या मूल गुरु की कल्पना करनी चाहिए। धन्यवाद फिर से
किशोर

कोई बात नहीं। :) हाँ, आपको अपनी शाखा के नामों का उपयोग करना चाहिए, मूल मास्टर केवल उदाहरण हैं।
सोमी

1

ऐसा लगता है कि git आपके संपादक (शायद vi) को लॉन्च कर रहा है ताकि आप एक प्रतिबद्ध संदेश टाइप कर सकें। यदि आप परिचित नहीं हैं vi, तो मूल बातें सीखना आसान है । विकल्प हैं:

  • का प्रयोग करें git commit -a -m "my first commit message"कमांड लाइन पर संदेश के लिए प्रतिबद्ध निर्दिष्ट करने के लिए (इस का उपयोग करते हुए एक संपादक शुरू नहीं होगा)

  • एक EDITORपर्यावरण संपादक को उस संपादक पर सेट करें, जिससे आप परिचित हैं


बहुत बहुत धन्यवाद हर कोई जिसने उत्तर दिया। मैंने अपनी फ़ाइलों को सफलतापूर्वक प्रतिबद्ध और धक्का दिया।
किशोर

1

यदि आप Github पर अपनी सभी फ़ाइलों को चरणबद्ध और प्रतिबद्ध करना चाहते हैं, तो निम्न कार्य करें;

git add -A                                                                                
git commit -m "commit message"
git push origin master

0

👉 चरण 1

git init

👉 चरण 2।

a) सभी फाइलों के लिए

git add -a

बी) केवल विशिष्ट फ़ोल्डर

git add <folder1> <folder2> <etc.>

👉 चरण 3।

git commit -m "Your message about the commit"

👉 चरण 4।

यहां छवि विवरण दर्ज करें

git remote add origin https://github.com/yourUsername/yourRepository.git

👉 चरण 5

git push -u origin master
git push origin master

यदि आप इस त्रुटि का सामना कर रहे हैं

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/harishkumawat2610/Qt5-with-C-plus-plus.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Command इस कमांड का उपयोग करें

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