मैं एकल कमांड का उपयोग करके नई गयी फ़ाइलों सहित सभी फ़ाइलों को कैसे चरणबद्ध और प्रतिबद्ध कर सकता हूं?


425

मैं एकल कमांड का उपयोग करके नई गयी फ़ाइलों सहित सभी फ़ाइलों को कैसे चरणबद्ध और प्रतिबद्ध कर सकता हूं?


3
निराशा की बात यह है कि यह संभव हुआ करता था और किसी भी नई फाइल को जोड़ने और जोड़ने के लिए मानक सिंटैक्स था: गिट कमिट-ए लेकिन फॉर्म के लिए सही, गिट सिंटैक्स बदल गया। इसने मौजूदा उपयोगकर्ताओं को भ्रमित किया (और उनकी स्क्रिप्ट्स को तोड़ दिया), उपयोगी कार्यक्षमता को समाप्त कर दिया और एक अनावश्यक ध्वज को प्रतिस्थापित किया।
फीजियारोन

1
Git add -A पर इसका एक डुप्लिकेट है , एक कमांड में git कमिट? । स्वीकृत उत्तर यहां स्वीकृत उत्तर के समान है, लेकिन इसमें शामिल टाइपिंग को छोटा करने के लिए एक git उपनाम बनाने का सुझाव देता है (और दिखाता है कि यह कैसे करना है)।
मार्क ऐमी

जवाबों:


568

कर देता है

git add -A && git commit -m "Your Message"

"एकल कमांड" के रूप में गणना करें?

नीचे दिए गए @ thefinnomenon के उत्तर के आधार पर संपादित करें :

इसे एक के रूप में git aliasउपयोग करने के लिए:

git config --global alias.coa '!git add -A && git commit -m'

और नई फ़ाइलों सहित सभी फाइलों के साथ एक संदेश के साथ प्रतिबद्ध करें:

git coa "A bunch of horrible changes"

स्पष्टीकरण ( git addप्रलेखन से ):

-ए, --all, - कोई-अनदेखी-हटाना

इंडेक्स को न केवल उस जगह पर अपडेट करें, जहां वर्किंग ट्री में फाइल मैचिंग है, बल्कि इंडेक्स में पहले से ही एक एंट्री है। यह कार्यशील ट्री से मेल करने के लिए अनुक्रमणिका प्रविष्टियों को जोड़ता है, संशोधित करता है और हटाता है।

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


3
प्रतिबद्ध संदेश के बारे में क्या?
नरेन्द्र जग्गी

11
@NarendraJaggi git add -A && git प्रतिबद्ध -m "Your Message"
Dr.jacky

1
कोई इसे अपने .sh या .bat फ़ाइल में रख सकता है और इसे केवल एक कमांड के रूप में उपयोग कर सकता है। संदेश हो सकता है param1
BlueWizard

और आप अपने .bashrc में मूल git कमांड के लिए शॉर्टकट भी जोड़ सकते हैं: alias gpl = 'git pull' alias gps = 'git push' alias gc = 'git कमिट' alias gs = 'git स्टेटस' alias gd = 'git diff' उर्फ गा = 'git add' उर्फ ​​gck = 'git checkout' alias gb = 'git ब्रांच' alias gl = 'git log' alias lcp = 'git format-पैच -1 HEAD' alit resetToMaster = 'git reset-hard origin-hard / मास्टर '
ni3

3
"" && "के लिए"; " दोनों कमांड चलाने के लिए, इस तरह:git add -A ; git commit -m "Your Message"
राफेल माइकेल

415

यह कमांड सभी संशोधित फ़ाइलों को जोड़ेगी और प्रतिबद्ध करेगी, लेकिन नई बनाई गई फ़ाइलों को नहीं

git commit -am  "<commit message>"

आदमी से कमिट

   -a, --all
       Tell the command to automatically stage files that have been modified
       and deleted, but new files you have not told Git about are not
       affected.

101
यह वास्तव में सवाल का जवाब नहीं देता है, वास्तव में विशेष रूप से (बोल्ड नो कम) समाधान के लिए मांग के प्रमुख भागों में से एक को बाहर करता है।
अरुणास

6
अनटैक की गई फ़ाइलों को जोड़ या कमिट नहीं करता है।
b15

3
लेकिन यह सबसे विशिष्ट स्थिति को कवर करता है जब आप "git add -A" के बाद करते हैं और ध्यान देते हैं कि आप कोड में कुछ छोटा बदलना भूल गए हैं। मैं खरोंच से कई बार एक ही प्रतिबद्ध संदेश लिखने से नफरत करता हूं
कोरबेनडलस

लेकिन थ्रेड स्टार्टर कहता है सभी फ़ाइलें, इसलिए, मुझे लगता है कि यह कोई गिनती नहीं करता है
फ्रेडरिक जी। सैंडलो

और आप अपने .bashrc में मूल git कमांड के लिए शॉर्टकट भी जोड़ सकते हैं: alias gpl = 'git pull' alias gps = 'git push' alias gc = 'git कमिट' alias gs = 'git स्टेटस' alias gd = 'git diff' उर्फ गा = 'git add' उर्फ ​​gck = 'git checkout' alias gb = 'git ब्रांच' alias gl = 'git log' alias lcp = 'git format-पैच -1 HEAD' alit resetToMaster = 'git reset-hard origin-hard / मास्टर '
ni3

26

मैं इस फ़ंक्शन का उपयोग करता हूं:

gcaa() { git add --all && git commit -m "$*" }

मेरे zsh config फाइल में, इसलिए मैं बस कर सकता हूं:

> gcaa This is the commit message

स्वचालित रूप से सभी फ़ाइलों को चरणबद्ध और प्रतिबद्ध करने के लिए।


1
बैश- function gcaa() { git add --all && git commit -m "$*" && git push }
लाइक के लिए

1
@Damilola - क्या मतलब है जैसे आप बैश ? जवाब में वाक्य रचना बैश में भी काम करता है
एलिरन मलका

यह अच्छा है, मैंने पहले एक उर्फ ​​का उपयोग किया था, gaa && gc -m "my commit"लेकिन यह बहुत अच्छा है ... <bashrc को बदलने के लिए बंद करता है ..>
andy mccullough

24

सभी फ़ाइलों को चरणबद्ध करने के लिए एक-लाइनर ( संशोधित , हटाए गए और नए ) और टिप्पणी के साथ प्रतिबद्ध:

git add --all && git commit -m "comment"

http://git-scm.com/docs/git-add
http://git-scm.com/docs/git-commit


एक-लाइनर, लेकिन एक भी कमांड नहीं (जो कि ओपी ने पूछा है)
एलिरन मलका

24

यह निश्चित नहीं है कि ये सभी उत्तर मेरे चारों ओर नाचते हैं जो मैं सही समाधान मानता हूं, लेकिन यहां जो इसके लायक है वह वही है जो मैं उपयोग करता हूं:

एक उपनाम बनाएं:

git config --global alias.coa '!git add -A && git commit -m'

सभी फ़ाइलें जोड़ें और संदेश के साथ प्रतिबद्ध:

git coa "A bunch of horrible changes"

नोट: coaसभी के लिए कम है और कुछ भी अपनी दिल की इच्छाओं के साथ बदला जा सकता है


1
इसके अलावा कोई उत्तर किसी संदेश के साथ सभी को सफलतापूर्वक करने की प्रक्रिया को सरल बनाता है।
सेप रीड

2
यह कमाल है, git aliasरास्ते की तलाश में था, बाकी उबाऊ है।
क्यूर्टेक्स

9

स्थिति के आधार पर git में कमिट करना एक मल्टीपल स्टेप प्रोसेस या एक स्टेप हो सकता है।

  1. यह स्थिति वह है जहाँ आपके पास एक से अधिक फ़ाइल अद्यतन की गई हैं और वे चाहते हैं:

    आपको कुछ भी करने से पहले सभी संशोधित फ़ाइलों को जोड़ना होगा।

    git add -A
    

    या

    git add --all
    
  2. उसके बाद आप सभी जोड़े गए फ़ाइलों का उपयोग कर सकते हैं

    git commit
    

    इसके साथ आपको इस कमिट के लिए मैसेज जोड़ना होगा।


6

यदि आप वर्तमान शाखा में परिवर्तनों को रोकने के लिए "त्वरित और गंदा" तरीका चाहते हैं, तो आप निम्न उपनाम का उपयोग कर सकते हैं:

git config --global alias.temp '!git add -A && git commit -m "Temp"'  

उस कमांड को चलाने के बाद, आप बस git temp"टेंप" नामक एक कमिट के रूप में वर्तमान ब्रांच में अपने सभी बदलावों को स्वचालित रूप से करने के लिए टाइप कर सकते हैं । फिर, आप git reset HEAD~बाद में उन परिवर्तनों को "अनसुना" करने के लिए उपयोग कर सकते हैं ताकि आप उन पर काम करना जारी रख सकें, या git commit --amendकमिट में और अधिक बदलाव जोड़ सकें और / या इसे एक उचित नाम दे सकें।


4

मेरे पास मेरे उपनाम में दो उपनाम हैं:

alias.foo=commit -a -m 'none'
alias.coa=commit -a -m

अगर मैं बहुत आलसी हूं तो मैं बस सभी परिवर्तनों के साथ प्रतिबद्ध हूं

git foo

और बस एक त्वरित प्रतिबद्ध करने के लिए

git coa "my changes are..."

coa का अर्थ "सभी के लिए" है


9
मुझे "कोई नहीं" कहते हुए प्रतिबद्ध संदेशों से भरे भंडार के साथ काम करने से नफरत होगी, और मैं उस आधार पर किसी भी पीआर को अस्वीकार कर दूंगा। दुर्भाग्य से, एक ही तरीका है कि आप अच्छे प्रतिबद्ध संदेशों के महत्व को जान सकते हैं, जब आपको कुछ समय पहले लिखी गई ऑडिट पर वापस जाना होगा ("यह पंक्ति बग पैदा कर रही है ... इसे क्यों जोड़ा गया, और कुछ भी होगा" अगर मैं इसे बदल / हटा दूं तो? ")।
ग्रिग्मैक

1
"कोई नहीं" के साथ आने का इरादा लंबे समय तक रहने का नहीं है। आम तौर पर मैं अपनी खुद की सुविधा शाखा शुरू करता हूं, माइक्रो कमिट करता हूं और मर्ज से पहले उन्हें कुछ अधिक उचित तरीके से स्क्वैश करता हूं। जाहिर है कि जो लोग प्रत्येक संशोधित फ़ंक्शन के लिए काम करते हैं और जो एक पूर्ण उड़ा हुआ दिमाग नहीं बनाते हैं उन्हें इसकी आवश्यकता नहीं है।
सिस्टमैटिकफ्रैंक

1
मैं इस उद्देश्य के लिए 'कोई नहीं' के बजाय 'wip' ("प्रगति में काम करने के लिए संक्षिप्त") का उपयोग करता हूं और मैं केवल अपनी निजी शाखाओं में इस तरह के काम करता हूं।
फ्रैंकफर्ट कोसिजेव

यह अभी भी अप्रभावी है, क्योंकि अंततः वे "wip" या "कोई भी" नहीं करता है, यह एक शाखा में बना देगा जो अन्य लोग देखते हैं, और संदेश लॉग को प्रदूषित करेंगे। यदि आप धक्का देने से पहले अपने सभी कमिट्स को तोड़ रहे हैं तो यह स्वीकार्य होगा लेकिन यह अन्यथा टीम के लिए अभी भी कष्टप्रद है।
जॉर्डन

यह एक गंभीर विचार है, और इसे अगले उत्तर के साथ जोड़कर आप वास्तव में ओपी के लिए 100% सटीक उत्तर प्राप्त कर सकते हैं। मैंने वास्तव में अपने उत्तर में आवश्यक चरणों (गिट-बैश का उपयोग करके) को रेखांकित किया। ( stackoverflow.com/a/43442269/869239 )
वीरो

3

दिए गए कमांड को रन करें

git add . && git commit -m "Changes Committed"

हालांकि, भले ही यह एक ही कमांड लगता है, यह एक के बाद एक दो अलग-अलग कमांड चलाता है। यहाँ हम सिर्फ &&उन्हें मिलाते थे। यह चलाने git add .और git commit -m "Changes Committed"अलग से बहुत अलग नहीं है । आप एक साथ कई कमांड चला सकते हैं, लेकिन अनुक्रम यहां मायने रखता है। यदि आप स्टेजिंग के साथ-साथ रिमोट सर्वर में बदलावों को आगे बढ़ाना चाहते हैं और प्रतिबद्ध हैं, तो आप इसे कर सकते हैं,

git add . && git commit -m "Changes Committed" && git push origin master

इसके बजाय, यदि आप अनुक्रम को बदलते हैं और pushपहले डालते हैं , तो इसे पहले निष्पादित किया जाएगा और मंचन के बाद वांछित धक्का नहीं देगा और सिर्फ इसलिए कि यह पहले से ही पहले से ही चल रहा है।

&&लाइन पर दूसरा कमांड चलाता है जब पहला कमांड सफलतापूर्वक वापस आता है, या 0. के त्रुटि स्तर के साथ होता &&है ||, इसके विपरीत है , जो दूसरी कमांड चलाता है जब पहला कमांड असफल होता है, या 1 के त्रुटि स्तर के साथ।

वैकल्पिक रूप से, आप के रूप में alise बना सकते हैं git config --global alias.addcommit '!git add -a && git commit -m'और इसे के रूप में उपयोग कर सकते हैंgit addcommit -m "Added and commited new files"


2

शानदार उत्तर, लेकिन अगर आप एक सिंगल लाइन की तलाश करते हैं, तो आप सुविधा, उपनाम और सुविधा का आनंद ले सकते हैं:

git add * && git commit -am "<commit message>"

यह एक एकल पंक्ति है, लेकिन दो कमांड हैं, और जैसा कि आप उल्लेख कर सकते हैं कि आप इन आदेशों को उपनाम दे सकते हैं:

alias git-aac="git add * && git commit -am " (अंत में स्थान महत्वपूर्ण है) क्योंकि आप नए शॉर्ट हैंड कमांड को मानकीकृत करने जा रहे हैं।

इस क्षण से, आप इस उपनाम का उपयोग करेंगे:

git-acc "<commit message>"

आप मूल रूप से कहते हैं:

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

आशा है कि आप लिनक्स का उपयोग करते हैं, आशा है कि यह मदद करता है।


0

आप एक छोटी सी स्क्रिप्ट लिख सकते हैं (इयान क्लेलैंड के उत्तर को देखें) जिसे बुलाया गया है git-commitallजो आप क्या करना चाहते हैं यह करने के लिए कई git कमांड का उपयोग करता है।
इस लिपि को अपने अंदर कहीं भी रखें $PATH। आप इसे git commitall... बहुत काम कर सकते हैं !

यहां मिला (प्रश्न और सभी उत्तर दुर्भाग्य से, केवल उच्च प्रतिष्ठा के साथ दिखाई दे रहे हैं)


पूरा सूत्र अच्छा पढ़ने वाला है ... इसीलिए मैंने इसे ^ ^
tanascius

@ दिमित्री - दुर्भाग्य से कुछ अध्ययनकर्ताओं ने इस उपयोगी सूत्र को हटाने का निर्णय लिया। यह अभी भी उच्च प्रतिष्ठा के साथ दिखाई दे रहा है, इसलिए मैं यहां लिंक रखता हूं।
tanascius

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