"गिट कमिट" और "गिट पुश" के बीच अंतर क्या हैं?


895

git commitआपके द्वारा किए जा रहे Git ट्यूटोरियल में, आपके द्वारा किए गए परिवर्तनों को संग्रहीत करने के लिए उपयोग किया जाता है।

git pushतब के लिए क्या उपयोग किया जाता है?


83
आप "Git cheatsheet" को भी देख सकते हैं जिसने मुझे इस अवधारणा को समझने में बहुत मदद की: ndpsoftware.com/git-cheatsheet.html
adriendenat

यहाँ एक और धोखा पत्र है: atlassian.com/git/tutorials/atlassian-git-cheatsheet
Kolob Canyon

2
इसका कोई उत्तर नहीं है क्योंकि यह पहले ही प्रदान किया जा चुका है। सिर्फ एक अवलोकन। मुझे लगता है कि कमिट को वास्तव में सेव कहा जाना चाहिए और पुश को कमिटेड कहा जाना चाहिए। क्लासिक नामकरण परिदृश्य समस्या।
डब्लिनएक्स

जवाबों:


1619

मूल रूप से git commit" संबंधित वस्तुओं के साथ दूरस्थ रेफरी को अद्यतन करता है " जबकि git push" भंडार में परिवर्तन रिकॉर्ड करता है "। तो पहले वाले का उपयोग आपके स्थानीय भंडार के संबंध में किया जाता है, जबकि बाद वाले का उपयोग दूरदराज के भंडार के साथ बातचीत करने के लिए किया जाता है।

यहाँ ओलिवर स्टील की एक अच्छी तस्वीर है , जो गिट मॉडल और आदेशों की व्याख्या करती है:

Git डेटा ट्रांसपोर्ट कमांड

बारे में अधिक पढ़ें git pushऔर git pullपर GitReady.com (लेख मैं पहली बार कहा गया है)


20
यहाँ मूल स्रोत है: osteele.com/archives/2008/05/my-git-workflow git वर्कफ़्लो की एक और तस्वीर के साथ
tanascius

9
@बेन गीथुब आपके काम को होस्ट करने के लिए "ऑन-द-क्लाउड", रिपॉजिटरी के git pushसाथ काम करने के लिए एक समाधान है । वास्तव में, गंतव्य किसी भी प्रकार का भंडार git pushहो सकता है। यह आपके स्वयं के स्थानीय हार्ड ड्राइव पर किसी अन्य निर्देशिका ( या , उदाहरण के लिए), या गिट रिपॉजिटरी में हो सकता है जो आपके स्वयं के होस्ट की सेवा करता है। git remote add clone ~/proj/clone.git; git push clone mastergit push ~/proj/clone.git master
सांता

2
तो ... क्या आपको पहले पुश करने या पहले करने की आवश्यकता है?
कोकोडोको

5
@ यह आपके कार्यक्षेत्र पर शुरू होता है, जहाँ आप फ़ाइलों को संशोधित करते हैं। फिर आप उन्हें इंडेक्स में जोड़ते हैं, उन्हें स्थानीय रिपॉजिटरी में डालते हैं और अंत में - उन्हें दूरस्थ रिपॉजिटरी में भेज देते हैं
tanascius

2
@ श्रीमान नहीं है कि संभव नहीं है। एक वितरित संस्करण नियंत्रण के रूप में पकड़ें आपको एक स्थानीय प्रतिलिपि की आवश्यकता होती है।
tanascius

215

प्रतिबद्ध : स्थानीय रिपॉजिटरी में परिवर्तन जोड़ना

धक्का : अंतिम प्रतिबद्ध (ओं) को एक दूरस्थ सर्वर में स्थानांतरित करने के लिए


56

खैर, मूल रूप से गिट कमिट आपके परिवर्तनों को आपके स्थानीय रेपो में डाल देता है, जबकि गिट पुश आपके परिवर्तनों को दूरस्थ स्थान पर भेजता है।


9
यह जीआईटी का उपयोग करने का मेरा दूसरा दिन है। जैसा कि मैं ऊपर दिए गए उत्तरों को देखता हूं, मुझे अभी भी एक स्पष्ट तस्वीर नहीं मिली है, लेकिन आपका जवाब सिर्फ इसे नाखून देता है। धन्यवाद।
बोफा

1
क्या git pushवास्तविक अद्यतित फ़ाइलें या कुछ विशेष "भिन्न" फ़ाइल अपलोड करता है ?
मल्टीगुडेवर्स

27

git pushइसका उपयोग स्थानीय रिपॉजिटरी पर आपके द्वारा किए गए कमिट्स को रिमोट से जोड़ने के लिए किया जाता है - साथ में git pull, यह लोगों को सहयोग करने की अनुमति देता है।


26

चूँकि git एक वितरित संस्करण नियंत्रण प्रणाली है, इसलिए अंतर यह है कि प्रतिबद्ध आपके स्थानीय रिपॉजिटरी में बदलाव करेगा, जबकि पुश रिमोट रेपो में बदलाव को आगे बढ़ाएगा।


19

कमिट : स्नैपशॉट | बदलाव | History_record | संस्करण | -सेव- अस रिपॉजिटरी का। परिहास का भंडार = श्रृंखला (वृक्ष) का काम करता है

स्थानीय भंडार: आपके कंप्यूटर पर भंडार।

रिमोट रिपॉजिटरी: एक सर्वर ( जीथूब ) पर रिपॉजिटरी ।

git commit: स्थानीय रिपॉजिटरी में एक नई प्रतिबद्धता (अंतिम प्रतिबद्ध + मंचन संशोधनों) को लागू करें । (सभी आवागमन संग्रहीत हैं )/.git

git push, git pullसिंक स्थानीय उसके संबंधित के साथ भंडार दूरस्थ भंडार। push- से परिवर्तनों को लागू स्थानीय में दूरस्थ , pull- से परिवर्तनों को लागू दूरदराज में स्थानीय


11

git commitस्थानीय रिपॉजिटरी में अपने परिवर्तन रिकॉर्ड करें ।

git push अपने स्थानीय परिवर्तनों के साथ दूरस्थ रिपॉजिटरी को अपडेट करें ।


20
आपका उत्तर मूल रूप से इस उत्तर के समान है , यह कुछ भी नया नहीं जोड़ता है।

7

तीन बातों पर ध्यान दें:

1) वर्किंग डायरेक्टरी ----- फोल्डर जहां हमारी कोड फाइल मौजूद है

2) स्थानीय रिपोजिटरी ------ यह हमारे सिस्टम के अंदर है। जब हम पहली बार COMMIT कमांड बनाते हैं तो यह लोकल रिपोजिटरी बनाई जाती है। उसी जगह पर जहां हमारी वर्किंग डायरेक्टरी है,
चेकिट (.गित) फाइल बन जाती है।
उसके बाद जब कभी हम प्रतिबद्ध होते हैं, तो यह हमारे द्वारा कार्यशील निर्देशिका की फ़ाइल में किए गए परिवर्तनों को स्थानीय रिपोजिटरी (निति) को संग्रहीत करेगा।

3) रिमोट रिपॉजिटरी ----- यह हमारे सिस्टम के बाहर स्थित है जैसे सर्वर दुनिया के किसी भी स्थान पर स्थित है। जीथुब की तरह। जब हम PUSH कमांड बनाते हैं तो हमारे स्थानीय रिपॉजिटरी के कोड इस रिमोट रिपॉजिटरी में स्टोर हो जाते हैं


7

बस निम्नलिखित बिंदुओं को जोड़ना चाहते हैं:

योन तब तक धक्का नहीं दे सकता जब तक आप प्रतिबद्ध नहीं होते हैं जब तक हम git pushआपके स्थानीय शाखा पर किए गए कमिट को एक दूरस्थ रिपॉजिटरी में धकेलने के लिए उपयोग करते हैं।

git pushआदेश दो तर्क लेता है:

एक दूरस्थ नाम, उदाहरण के लिए, origin एक शाखा का नाम, उदाहरण के लिए,master

उदाहरण के लिए:

git push  <REMOTENAME> <BRANCHNAME> 
git push  origin       master

4

एक बहुत ही कच्चा सादृश्य: यदि हम git commitएक संपादित फ़ाइल को सहेजने की तुलना करते हैं, तो git pushवह फ़ाइल को किसी अन्य स्थान पर कॉपी कर देगा।

कृपया इस संदर्भ से इस सादृश्य को न लें - कमिट करना और धकेलना किसी संपादित फ़ाइल को सहेजना और उसकी प्रतिलिपि बनाना पसंद नहीं है। यह कहा, यह तुलना के लिए पकड़ चाहिए।


1

गिट कमांड के उपयोग को समझना आसान है addऔर commitयदि आप एक लॉग फ़ाइल को गितुब पर अपने भंडार में बनाए रखने की कल्पना करते हैं। मेरे लिए एक विशिष्ट परियोजना की लॉग फ़ाइल इस तरह दिख सकती है:

---------------- Day 1 --------------------
Message: Completed Task A
Index of files changed: File1, File2

Message: Completed Task B
Index of files changed: File2, File3
-------------------------------------------

---------------- Day 2 --------------------
Message: Corrected typos
Index of files changed: File3, File1
-------------------------------------------
...
...
...and so on

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

इनमें से प्रत्येक उप कार्य (टास्क ए और टास्क बी यहां) व्यक्तिगत रूप से किए गए हैं। git addआदेश 'फ़ाइलें सूचकांक बदल गया' सूची में फ़ाइलों को कहते हैं। इस प्रक्रिया को स्टेजिंग भी कहा जाता है और वास्तव में रिकॉर्ड्स ने फाइलों को बदल दिया और परिवर्तन किए गए। git commitआदेश रिकार्ड / परिवर्तन और जो बाद में संदर्भ के लिए इस्तेमाल किया जा सकता है एक संदेश के साथ साथ इसी सूचकांक सूची अंतिम रूप।

याद रखें कि आप अभी भी केवल अपनी रिपॉजिटरी की स्थानीय प्रति बदल रहे हैं, न कि गितुब पर। इसके बाद, केवल जब आप git pushइन सभी रिकॉर्ड किए गए परिवर्तनों को करते हैं, तो प्रत्येक प्रतिबद्ध के लिए आपकी अनुक्रमणिका फ़ाइलों के साथ, मुख्य रिपॉजिटरी (जीथब पर) पर लॉग इन करें।

एक उदाहरण के रूप में, उस काल्पनिक लॉग फ़ाइल में दूसरी प्रविष्टि प्राप्त करने के लिए, मैंने किया होगा:

git pull
# Make changes to File3 and File4
git add File3 File4
# Verify changes, run tests etc..
git commit -m 'Corrected typos'
git push

संक्षेप में, git addऔर git commitआप व्यवस्थित तार्किक उप-परिवर्तनों में मुख्य रिपॉजिटरी में एक बदलाव को समाप्त कर सकते हैं। जैसा कि अन्य उत्तरों और टिप्पणियों ने बताया है, उनके लिए कई और उपयोग हैं। हालांकि, यह सबसे आम उपयोगों में से एक है और एसआईवी जैसे अन्य लोकप्रिय लोगों के विपरीत जीआईटी एक बहु-चरण संशोधन नियंत्रण प्रणाली होने के पीछे एक ड्राइविंग सिद्धांत है।


0

git कमिट कुछ भी नहीं है, लेकिन आधिकारिक तौर पर हमारे बदलावों को सहेजने के लिए, हर कमिट के लिए हम कमिट मेसेज देते हैं, एक बार जब हम कमिट्स के साथ हो जाते हैं, तो हम इसे विश्व स्तर पर हमारे बदलाव को देखने के लिए रिमोट पर धकेल सकते हैं

जिसका अर्थ है कि हम रिमोट पर धकेलने से पहले कई कमिट कर सकते हैं (हम किए गए कमिट की सूची देख सकते हैं और मैसेज भी) git प्रत्येक कमिट को id आईडी से बचाता है जो कि 40 अंकों का कोड है

और मैं git पुश का उपयोग केवल तभी करता हूं जब मैं रिमोट में अपना परिवर्तन देखना चाहता था (इसके बाद मैं जांच करूंगा कि क्या मेरे कोड ने जेनकिंस में काम किया है)


-1

खैर, मूल रूप से गिट कमिट आपके परिवर्तनों को आपके स्थानीय रेपो में डाल देता है, जबकि गिट पुश आपके परिवर्तनों को दूरस्थ स्थान पर भेजता है। चूँकि git एक वितरित संस्करण नियंत्रण प्रणाली है, इसलिए अंतर यह है कि कमिट आपके स्थानीय रिपॉजिटरी में बदलाव करेगा, जबकि पुश एक रिमोट रेपो तक परिवर्तन को धक्का देगा।

स्रोत Google

http://gitref.org/basic/ यह लिंक बहुत उपयोगी भी होगा

https://git-scm.com/docs/git-commit


यह उत्तर शब्द को दूसरे उत्तरों के लिए शब्द कॉपी करता है।
जेफरी ओपोकू-मेंसा

इससे पहले जो कुछ भी कहा गया है, वह सभी के लिए कुछ भी नया नहीं लाता है ...
हबलो

-1

आम शब्दों में, git commitइससे पहले कि git pushआप उन्हें उस क्रम में चलाने के लिए कदम है सफलतापूर्वक अपनी फ़ाइल को गिटब करने के लिए।


-2

git commitस्थानीय रेपो में फ़ाइलों का मंचन करना है। git pushदूरस्थ मास्टर शाखा के साथ स्थानीय पक्ष की मास्टर शाखा को तेज़ी से अग्रेषित करना है। लेकिन मर्ज हमेशा सफल नहीं होगा। यदि अस्वीकृति प्रकट होती है, तो आपको ऐसा करना होगा pullताकि आप एक सफल बना सकें git push


कुछ लोग पुल के बजाय पुश को मजबूर करना चाह सकते हैं। यह स्थिति पर निर्भर करता है। वास्तव में, यदि आपको छूट दी जाती है तो आप उस शाखा पर जाते हैं जिसे आप अन्य लोगों के साथ साझा नहीं कर रहे हैं (यहां तक ​​कि एक दूरस्थ रेपो पर), तो निश्चित रूप से खींचना वह नहीं है जो आप करना चाहते हैं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.