G गिट कमिट ’मेरे परिवर्तनों को क्यों नहीं बचाता है?


251

मैंने ऐसा किया git commit -m "message":

> git commit -m "save arezzo files"
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

लेकिन बाद में, जब मैं ऐसा git statusकरता हूं तो वही संशोधित फाइलें दिखाता है:

> git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

मैं क्या गलत कर रहा हूं?


16
git commit -am "save arezzo files"सभी परिवर्तनों को स्वचालित रूप से जोड़ने के लिए उपयोग करें (wrt .ignignore)। आप केवल विशिष्ट फ़ाइलों / dirs जोड़ सकते हैं:git add file.src
MBX

जवाबों:


400

जैसा संदेश कहता है:

इसमें कोई परिवर्तन नहीं किए गए हैं ("git add" और / या "git प्रतिबद्ध -a" का उपयोग करें)

Git में एक "स्टेजिंग एरिया" है, जहाँ प्रतिबद्ध होने से पहले फ़ाइलों को जोड़ना पड़ता है, आप यहाँ इसका स्पष्टीकरण पढ़ सकते हैं


अपने विशिष्ट उदाहरण के लिए, आप उपयोग कर सकते हैं:

git commit -am "save arezzo files"

( aझंडे में अतिरिक्त ध्यान दें , यह भी लिखा जा सकता है git commit -a -m "message"- दोनों एक ही काम करते हैं)

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

आप git प्रलेखन पृष्ठ पर git का उपयोग कैसे करें के लिए सामान्य प्रलेखन और ट्यूटोरियल भी पा सकते हैं जो फ़ाइलों के मंचन / जोड़ने की अवधारणा के बारे में अधिक विवरण देगा।


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


@PeterBoughton का अर्थ था "इंटरैक्टिंग ऐड" के बजाय "इंटरेक्टिव एडिंग"?
djb

3
नाह, मेरा मतलब था कि आपस में जुड़ना।
पीटर बॉटन

2
रिमोट रिपॉजिटरी में कोड को आगे बढ़ाने से पहले लोकल रिपॉजिटरी एक तरह का स्टेजिंग एरिया है। परिवर्तनों को शुरू करने से पहले एक और "परत" क्यों जोड़ें, क्या यह थोड़ा ज़्यादा नहीं है? मैं नया हूँ, लेकिन मुझे लगता है कि 99,99% डेवलपर्स हमेशा प्रतिबद्ध-का उपयोग करते हैं क्योंकि परिवर्तन वैसे भी उनके स्थानीय वातावरण से बाहर नहीं जाते हैं।
पावेलरमैन

2
मुझे लगता है कि मैं सिर्फ इस में भाग गया क्योंकि मैं अपनी आईडीई के लिए इस्तेमाल कर रहा हूँ मेरे लिए इसका ख्याल रखना। यह निश्चित नहीं है कि यह एक आवश्यक कदम क्यों है, लेकिन फिर से, जीआईटी के बारे में बहुत कुछ है जो मुझे नहीं मिलता है ... मेरा मतलब है जीआईटी ...
trpt4him

49

आपने परिवर्तन नहीं जोड़े। या तो विशेष रूप से उन्हें के माध्यम से जोड़ें

git add filename1 filename2

या सभी परिवर्तन जोड़ें (परियोजना के मूल पथ से)

git add .

या आते -aसमय आशुलिपि का उपयोग करें :

git commit -a -m "message".

इसके अलावा, मैं उपयोगकर्ताओं से इंटरेक्टिव ऐडिंग का उपयोग करने का आग्रह करता हूं। खासकर जब आप अच्छे छोटे कमिट बनाने की कोशिश कर रहे हैं जो आसानी से प्रतिवर्ती हैं।
jer


8

मैंने एक छोटी उप परियोजना की प्रतिलिपि बनाई जो मेरे पास एक अन्य परियोजना में गिट स्रोत नियंत्रण के तहत थी और .गित फ़ोल्डर को हटाने के लिए भूल गया। जब मैं कमिट करने गया तो मुझे ऊपर जैसा ही मैसेज मिला और जब तक मैंने .gitफोल्डर डिलीट नहीं किया तब तक इसे क्लीयर नहीं कर पाया ।

यह थोड़ा मूर्खतापूर्ण है, लेकिन यह जांचने योग्य है कि आपके पास फ़ोल्डर के तहत एक .गित फ़ोल्डर नहीं है जो कि प्रतिबद्ध नहीं है।


7

आप कर सकते हैं:

git add -u -n

यह जाँचने के लिए कि आपने किन फ़ाइलों को संशोधित किया है और जोड़ा जा रहा है (शुष्क रन: -n विकल्प), और फिर

git add -u

बस संशोधित फ़ाइलों को जोड़ने के लिए


4

मुझे यह समस्या तब दिखाई देती है जब मैंने नीचेgit add . एक उपनिर्देशिका में किया होता है जहाँ मेरी .gitignoreफ़ाइल रहती है (मेरी रिपॉजिटरी की होम डायरेक्टरी, बोलने के लिए)। अपने ऊपरवाले निर्देशिकाओं और git add .उसके बाद चलने वाली निर्देशिकाओं को बदलने का प्रयास करें git commit -m "my commit message"


4

शायद एक स्पष्ट बात है, लेकिन ...

यदि आपको सूचकांक में समस्या है, तो git-gui का उपयोग करें । आपको बहुत अच्छा दृश्य मिलता है कि सूचकांक (स्टेजिंग क्षेत्र) वास्तव में कैसे काम करता है।

जानकारी का एक अन्य स्रोत जिसने मुझे इंडेक्स को समझने में मदद की स्कॉट स्कॉट्सन "गेटिंग गिट" पृष्ठ 259 और आगे।

मैंने कमांड लाइन का उपयोग करना शुरू कर दिया क्योंकि अधिकांश दस्तावेज केवल यही दिखाते थे ...

मुझे लगता है कि git-gui और gitk वास्तव में मुझे तेजी से काम करते हैं, और मुझे उदाहरण के लिए "git pull" जैसी बुरी आदतों से छुटकारा मिल गया ... अब मैं हमेशा पहले प्राप्त करता हूं ... देखें कि नए बदलाव वास्तव में मेरे विलय से पहले क्या हैं।


3

ऐसा होने का कारण यह है क्योंकि आपके पास एक फ़ोल्डर है जो पहले से ही एक अन्य फ़ोल्डर के अंदर Git द्वारा ट्रैक किया जा रहा है जिसे Git द्वारा भी ट्रैक किया गया है। उदाहरण के लिए, मेरे पास एक परियोजना थी और मैंने इसमें एक सबफ़ोल्डर जोड़ा। इससे पहले कि मैं एक को दूसरे के अंदर डालता, उन दोनों को गिट द्वारा ट्रैक किया जा रहा था। अंदर वाले को ट्रैक करने से रोकने के लिए, इसे ढूंढें और इसके साथ Git फ़ाइल को हटा दें:

rm -rf .git

मेरे मामले में मेरे पास एक वर्डप्रेस एप्लिकेशन था और मैंने जो फ़ोल्डर जोड़ा था वह एक थीम था। इसलिए मुझे थीम रूट पर जाना था, और गिट फाइल को हटाना था, जिससे कि अब पूरी परियोजना को पैरेंट, वर्डप्रेस एप्लिकेशन द्वारा ट्रैक किया जा सकेगा।


1

यदि आपके पास मेरे मामले में अधिक फाइलें हैं, तो मेरे पास 7000 छवि फाइलें हैं, जब मैं उन्हें प्रोजेक्ट के रूट फ़ोल्डर से जोड़ने की कोशिश करता हूं, तो उन्होंने उन्हें जोड़ा नहीं है, लेकिन जब मैं छवि फ़ोल्डर में जाता हूं तो सब कुछ ठीक है। टार्गेट फोल्डर से गुजरें और अबॉज की तरह कमांड करें

git add .
git commit -am "image uploading"
git push origin master

git पुश ओरिजिनल मास्टर एन्यूमरेटिंग ऑब्जेक्ट्स: 6574, किया। गिनती की वस्तुओं: 100% (6574/6574), किया। 4 थ्रेड्स का उपयोग करते हुए डेल्टा संपीड़न वस्तुओं को कंप्रेस करना: 100% (6347/6347), किया गया। लेखन वस्तुएं: 28% (1850/6569), 142.17 MiB | 414.00 कीबी / एस


0

मेरे पास एक मुद्दा था जहां मैं commit --amendएक जारी करने के बाद भी कर रहा था git add .और यह अभी भी काम नहीं कर रहा था। पता चलता है कि मैंने कुछ .vimrcअनुकूलन किए और मेरा संपादक सही ढंग से काम नहीं कर रहा था। इन त्रुटियों को ठीक करना ताकि vimसही कोड वापस आए समस्या का समाधान हो।


0

मेरे पास एक ही त्रुटि संदेश के साथ एक समान मुद्दा था। "परिवर्तन प्रतिबद्ध के लिए नहीं", फिर भी जब मैं एक ऐसा करता हूं तो यह अंतर दिखाता है। आखिरकार मुझे पता चला कि कुछ समय पहले मैंने एक डाइरेक्टरी केस को बदल दिया था। पूर्व। "PostgeSQL" से "postgresql"। जैसा कि मुझे याद है अब कभी-कभी पुराने केस डायरेक्टरी में git एक फाइल या दो को पीछे छोड़ देगा। फिर आप नए केस के लिए एक नया संस्करण तैयार करेंगे।

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

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

इस बिंदु पर आपको अपने स्थानीय कंप्यूटर पर एक पुल करने में सक्षम होना चाहिए और संघर्षों को नहीं देखना चाहिए। इस प्रकार फिर से प्रतिबद्ध होने में सक्षम। :)


0

यदि आपके पास एक सबफ़ोल्डर है, जिसे अन्य गिट-रिपॉजिटरी से क्लोन किया गया था, तो सबसे पहले आपको चाइल्ड-रिपॉजिटरी से $ .it $ फ़ाइल को निकालना होगा: rm -rf .git उसके बाद आप पेरेंट फ़ोल्डर में बदल सकते हैं और उपयोग कर सकते हैं git add -A

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