"परिवर्तन प्रतिबद्ध के लिए मंचन नहीं करता है" क्या मतलब है


239

मुझे लगा कि अगर आप उन फ़ाइलों को ट्रैक करना चाहते हैं जो आपको चाहिए git add [files you want to track]

मुझे नहीं पता कि मुझे संदेश क्यों मिले Changes not staged for commit

यदि उन फ़ाइलों का मंचन नहीं किया गया था, तो gitमुझे उन फ़ाइलों को नहीं दिखाना चाहिए Untrackedजो इस तरह थीं

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

मैंने जो कुछ किया है, वह developशाखा से एक नई सुविधा बनाने और feature/change_excel_formatशाखा में काम करने का था

मैंने सोचा कि उन फाइलों को stagedस्थिति में होना चाहिए ,

लेकिन git statusमुझे बतायाChanges not staged for commit

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

संक्षिप्त करने के लिए, मैं सिर्फ Git में 3 चरणों देखते हैं पता है untracked, staged, committed किसी भी एक मुझे बता सकते हैं, क्या में चरण थाChanges not staged for commit यहां छवि विवरण दर्ज करें

इसलिए अगर मैंने फ़ाइल को संशोधित किया a (पहले से ही रेपो में)

और प्रकार git st, मुझे बताएगाChanges not staged for commit

अगर मैं git aतो फ़ाइल में aहोगाstaged status

अगर मैं संशोधित file aअब, वहाँ के दो स्थिति में आ जाएगा file aमें git, है ना?

इसलिए मुझे यह तय करना होगा कि क्या staged aकमिट किया जाए या not stage aस्टेज का निर्माण किया जाए, और फिर पिछले स्टेज file aको छोड़ दिया जाएगा?

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


3
यदि आपको यह संदेश मिलता है, और क्या आप चाहते हैं कि यह फ़ाइल (ए) प्रतिबद्ध करने की आवश्यकता है, तो सुनिश्चित करें कि आप सही निर्देशिका पथ (सभी जोड़ने के लिए परियोजना रूट पथ) में हैं, जबकि आप जोड़ते हैं
Sadee

जवाबों:


325

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

यह आपको केवल पिछले बदलाव के बाद किए गए परिवर्तनों का एक सबसेट करने की अनुमति देता है। उदाहरण के लिए, मान लें कि आपके पास फ़ाइल a, फ़ाइल bऔर फ़ाइल है c। आप फ़ाइल aऔर फ़ाइल को संशोधित bकरते हैं लेकिन परिवर्तन प्रकृति में बहुत भिन्न होते हैं और आप नहीं चाहते कि वे सभी एक ही प्रतिबद्ध रहें। आप जारी करें

git add a
git commit a -m "bugfix, in a"
git add b
git commit b -m "new feature, in b"

एक साइड नोट के रूप में, यदि आप सब कुछ करना चाहते हैं तो आप बस टाइप कर सकते हैं

git commit -a

आशा करता हूँ की ये काम करेगा।


1
इसलिए, यदि वे फाइलें रेपो में अलग हैं। और मैंने उन्हें बदल दिया है, मैं भी git commit THEMसीधे बिना उन्हें जोड़ सकता हूं, है ना?
newBike

1
बेशक। और उस मामले में केवल सूचीबद्ध फाइलें ही प्रतिबद्ध होंगी, भले ही अलग-अलग फाइलों में मंचित बदलाव की मौजूदगी हो।
स्टेफानो फालसाका

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

1
मैंने पहले ही कर लिया है git clean -fdऔर मैं अभी भी यह कर रहा हूं। मैं सभी परिवर्तनों से छुटकारा पाना चाहता हूं। मुझे और क्या करते रहना चाहिए?
हनी

3
git commit -aसब कुछ नहीं करता है, केवल अपडेट की गई फाइलें, नया नहीं ...
मार्टिन

62

आपको उन्हें जोड़ने के लिए git ऐड का उपयोग करना होगा, या वे प्रतिबद्ध नहीं होंगे। यह लें कि यह git को सूचित करता है कि आप कौन से बदलाव करना चाहते हैं।

git add -u :/चरण में सभी संशोधित फ़ाइल परिवर्तन git add * :/जोड़ता है और चरण में किसी भी नई फ़ाइल (जो कि gitignore'ed नहीं है) को जोड़ता है


2
यह उत्तर स्पष्ट है और ऊपर वाले की तुलना में संक्षिप्त है, यही कारण है कि मुझे यह पसंद है। ;)
ओक्साकामैट

13

यह आपको बताने का एक और तरीका है:

अरे, मैं देख रहा हूं कि आपने कुछ परिवर्तन किए हैं, लेकिन ध्यान रखें कि जब आप मेरे इतिहास के पृष्ठ लिखते हैं, तो वे परिवर्तन इन पृष्ठों में नहीं होंगे।

यदि आप git addउन्हें स्पष्ट रूप से नहीं देते हैं (और यह समझ में आता है) तो फ़ाइलों में परिवर्तन का मंचन नहीं किया जाता है ।

इसलिए जब आप git commit, इन परिवर्तनों को जोड़ नहीं दिया जाएगा क्योंकि वे मंचन नहीं कर रहे हैं। यदि आप उन्हें कमिट करना चाहते हैं, तो आपको उन्हें पहले (यानी git add) स्टेज पर लाना होगा ।


2
लेकिन मैंने फ़ाइल को संदर्भित नहीं किया
Eoin

1
मुझे समझ में नहीं आ रहा है कि वास्तव में यह व्यवहार कैसे समझ में आता है। अगर मैंने पहले ही बता दिया है कि मैंने add .रिपॉस्टिरि को सेट करते समय एक फाइल को कैसे ट्रैक किया है , और यह पता लगा सकता है कि मैंने इसमें बदलाव किए हैं, तो मुझे हर बार मेरे द्वारा फाइल करने की आवश्यकता क्यों है? बस एक फाइल करने के लिए परिवर्तन करने के लिए, मैं करने के लिए है add, commit और push । के बीच सीमांकन commitऔर धक्का मुझे समझ में आता है, के बीच सीमांकन addऔर commitहास्यास्पद लगता है।
प्रोमेथियस

1
@ हाशिम मैं सहमत हूं, मैं वास्तव में तर्क नहीं समझता।
हरमन टूथ्रोट

6

नीचे दिए गए चरणों का पालन करें:

1- गिट स्टैश
2- गिट जोड़।
3- git कमिट-मी "आपका कमिट मेसेज"


5
git stash ने मेरे सभी परिवर्तनों को हटा दिया, वहाँ 10 घंटे का काम था :(
viniciussvl

13
अगर आपने "गिट स्टैश" का इस्तेमाल किया है, तो उन बदलावों को "टेम्प प्लेस" में लाने के लिए उन्हें वापस टाइप करें "गिट स्टैश पॉप" "टेम्प प्लेस" से अपना बदलाव पाने के लिए
साइरस ज़ी

12
जब तक आप @viniciussvl और साइरस टिप्पणी नहीं पढ़ते हैं, तब तक उसका उपयोग न करें
shabby

1
मैं इस मामले में गिट स्टैश का उपयोग क्यों करूंगा?
टोबियास कॉफमैन

4

आपने नया फ़ाइल परिवर्तन सहेज लिया है (navbar.component.html उदाहरण के लिए)

Daud:

ng status
modified:   src/app/components/shared/navbar/navbar.component.html

यदि आप उस फ़ाइल के लिए उन परिवर्तनों को अपलोड करना चाहते हैं जिन्हें आपको चलाना होगा:

git add src/app/components/shared/navbar/navbar.component.html

और तब:

git commit src/app/components/shared/navbar/navbar.component.html -m "new navbar changes and fixes"

और तब:

git push origin [your branch name, usually "master"]

-------------------------------------------------- -------------

या यदि आप अपने सभी परिवर्तन (कई / सभी फ़ाइलें) अपलोड करना चाहते हैं:

git commit -a

और यह दिखाई देगा "कृपया अपने परिवर्तनों के लिए प्रतिबद्ध संदेश दर्ज करें।"

  • यदि आप एक संदेश के बिना कमिट करते हैं तो आपको यह संदेश दिखाई देगा (-m)
  • आप इससे दो चरणों में बाहर निकल सकते हैं:
  • 1.a. कमिट के साथ foward स्थानांतरित करने के लिए एक बहु-पंक्ति संदेश टाइप करें।
  • 1.b. कमिट करने के लिए खाली छोड़ दें।
    1. हिट "esc" फिर टाइप करें: "wq" और अपनी पसंद को बचाने के लिए एंटर दबाएं। आहा!

और तब:

git push

और वियोला!


2
वही मैंने ऊपर कहा: git commit -aपरिवर्तनों को अपलोड नहीं करता है, इसमें नई फाइलें शामिल नहीं हैं। यह केवल मौजूदा फ़ाइलों के अपडेट के लिए प्रतिबद्ध होगा।
मार्टिन

3

इंट गिट बैश के बाद प्रयास करें

1।git add -u :/

2।git commit -m "your commit message"

  1. git push -u origin master

नोट: यदि आपने अपने रेपो को इनिशियलाइज़ नहीं किया है।

सबसे पहले

git init 

और क्रम में उपर्युक्त चरणों का पालन करें। इसने मेरे लिए काम किया


इस मुद्दे ने मेरे लिए काम किया, एक संघर्ष पर जहां मैं अपनी स्थानीय रिपॉजिटरी से एक फ़ाइल को हटाने और स्थानीय रिपॉजिटरी से रिमोट मास्टर शाखा के लिए प्रतिबद्ध नहीं था।
सिवोकु एडियोला

1

इसका मतलब है कि वे प्रतिबद्ध होने के लिए नहीं जोड़े गए हैं, आपको स्क्रिप्ट / excel_parser.py और उन्हें मंच पर पसंद करने के लिए git ऐड करना होगा। एक बार जब वे मंचित करते हैं, तो जब आप git का दर्जा देते हैं, तो उनका मंचन किया जाएगा और git प्रतिबद्ध होगा।

आप "सभी चेकइन" को प्रतिबद्ध कर सकते हैं, जो पेड़ में सभी फाइलों को स्वचालित रूप से चरणबद्ध और प्रतिबद्ध करेगा


1

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

इसे दूर करने के लिए, आप पहले फ़ाइल को git ऐड ( git add your_file_name.py) का उपयोग करके जोड़ सकते हैं और फिर परिवर्तन कर सकते हैं ( git commit -m "Rename Files" -m "Sample script to rename files as you like")


1

मैंने ऊपर दिए गए सभी उत्तरों को पढ़ा है और टर्मिनल चरणों में कोशिश की है जो अद्यतन नई और मास्टर पर फ़ाइलों को बदलने के लिए ठीक काम करता है।

1) गिट जोड़। 2) git कमिट -म "आपका संदेश" 3) git पुश ओरिजनल मास्टर

मैं आशान्वित हूं कि इससे आपको सहायता मिलेगी।



-7

हटाना dir/.../.git

मेरे लिये कार्य करता है।


आपके उत्तर को पृष्ठभूमि की जानकारी या अंतर्दृष्टि की आवश्यकता है कि यह आपके लिए क्यों या कैसे काम करता है।
जोशुआ के

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