मैं यह क्यों नहीं पहचानता कि मेरी फ़ाइल बदल दी गई है, इसलिए git काम नहीं कर रहा है


98

मैं बैश का उपयोग करके अपनी फ़ाइलों को गिथब में धकेलने की कोशिश कर रहा हूं। वे पहले से ही वहां हैं, और मैं नई लाइनों और कोड के साथ एक नया संस्करण अपलोड कर रहा हूं, आदि। लेकिन जब मैं कोशिश करता हूं git addऔर तब git statusयह कहता है:

शाखा मास्टर पर

कुछ भी नहीं करने के लिए, स्वच्छ निर्देशिका काम कर रहा है

और मैं जिस फ़ाइल का उपयोग कर रहा हूं, वह अभी संशोधित हुई थी।


4
यदि आप पहले से ही प्रतिबद्ध हैं, तो आपके पास प्रतिबद्ध लॉग चेक करने के लिए कुछ भी नहीं है।
ग्रैडी प्लेयर

2
git diff का आउटपुट क्या है?
माज़ा

2
@maazza मैं git diff से बाहर कुछ भी नहीं मिलता है
somerandomguy

1
यदि git diff(या git status) कुछ भी नहीं दिखाता है जो बताता है कि क्यों जोड़ना नहीं है। तो सवाल वास्तव में है: "क्यों नहीं पहचानता है कि मेरी फ़ाइल बदल दी गई है?"
सुनील डी।

क्षमा करें दोस्तों, मैं देख रहा हूं कि क्या हो रहा है।
नितिन

जवाबों:


127

मुझे एक समस्या थी जहां एक बार मैंने अपनी फ़ाइल पर 'अपरिवर्तित मान' करने के लिए git इंडेक्स सेट किया।

आप फ़ाइल के साथ परिवर्तनों को अनदेखा करने से रोकने के लिए गिट को बता सकते हैं:

git update-index --no-assume-unchanged path/to/file

यदि वह रीसेट करने में मदद नहीं करता है तो अन्य अजीब मामलों के लिए पर्याप्त हो सकता है।


व्यवहार में मुझे कैश्ड फ़ाइल को हटाने और इसे काम करने के लिए रीसेट करना पड़ा:

git rm --cached path/to/file
git reset path/to/file

git rm --cachedकेवल फाइल को इंडेक्स से हटाने का मतलब है, और resetजीआईटी इंडेक्स को आखिरी कमिट से फिर से लोड करने के लिए कहता है।


18
git add -f path/to/the/fileयह जबरदस्ती प्रतिबद्ध के लिए फाइलें जोड़ देगा।
सैन

2
यह उत्तर एकमात्र था जिसने मेरे मुद्दे को ठीक करने में मदद की। निश्चित नहीं है कि अगर यह एक विंडोज चीज है (मुझे अतीत में इस तरह की कोई समस्या नहीं हुई है, या तो ओएक्सएक्स या लिनक्स में)। तो @ThorSummoner को धन्यवाद। Btw, मैंने git add -fउस फ़ाइल की कोशिश की जो इस "अपरिवर्तित मान" स्थिति में थी, और यह काम नहीं किया - या तो करना पड़ाgit update-index या इसे काम करने के लिए या git rm --cachedउसके बाद git resetहोना चाहिए।
rsenna

1
इसके अलावा, यदि आप वास्तव में अपने रेपो करंट स्टेट के बारे में अनिश्चित हैं, तो यह करें: git rm --cached -r .और फिर git reset .
रसना

कोशिश करने का एक और विकल्प है git update-index --no-skip-worktree path/to/file, यह है कि मैंने अपना मुद्दा हल कैसे किया
Fr0sT

1
मेरे लिए काम किया, लेकिन हाँ केवल एकल फ़ाइल मामले।
थॉमस चेंग

24

अपनी .gitignoreफ़ाइल की जाँच करें । आप पा सकते हैं कि फ़ाइल, या फ़ाइल का विस्तार, या उस फ़ाइल का पथ जिसे आप प्रविष्टि में मिलान के साथ काम करने का प्रयास कर रहे हैं .gitignore, जो बताता है कि क्यों उस फ़ाइल को अनदेखा किया जा रहा है (और परिवर्तित फ़ाइल के रूप में पहचाना नहीं गया)।

यह मेरे लिए मामला था जब मुझे इसी तरह की समस्या थी।


1
मैंने अपने .itignore को जेनरेट करने के लिए gitignore.io का उपयोग किया है और मुझे इस लाइन के साथ मिल गया है lib/, जो इस फ़ोल्डर को अनदेखा करता है। इसके साथ कोई समस्या नहीं है - कम से कम अगर यह फ़ोल्डर आपके प्रोजेक्ट का मुख्य फ़ोल्डर नहीं है, जैसे कि मेरे साथ क्या हुआ।
पलादिनी

और मेरे मामले में किसी के लिए, यह वास्तव में मेरा वैश्विक बहिष्कृत था
vpzomtrrfrt

पहले, यह काम नहीं किया। लेकिन, मुझे यह काम करने के लिए मिला। मेरे मामले में, नजरअंदाज की जाने वाली चीज का उल्लेख दो बार gitignore फाइल में किया गया था। हमेशा सभी घटनाओं को खोजें और सभी को बदलें।
मास्टरजियो

8

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


8

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

डॉक्स के अनुसार:

Like --refresh, but checks stat information unconditionally, without regard to the "assume unchanged" setting.

यह "मान-अपरिवर्तित" झंडे की परवाह किए बिना सभी फाइलों के परिवर्तनों को ट्रैक करने के लिए मूल रूप से बाध्य करेगा।


1
मेरे लिए git statusकहते हैं कि कोई फ़ाइल नहीं बदली गई है, लेकिन git add .दो फ़ाइलों को जोड़ता है, और git update-index --really-refreshकहता है कि उन दो अपडेट की आवश्यकता है, लेकिन कुछ भी करने के लिए प्रतीत नहीं होता है। कोई उपाय?
someonewithpc

2
git स्थिति मान-अपरिवर्तित ध्वज के साथ फ़ाइलों को अनदेखा करती है। हालांकि git अपडेट-इंडेक्स का उपयोग करते हुए - असत्य-रिफ्रेश उस झंडे को साफ कर देगा और फाइलें अब दिखाई देंगी। यह देखने के लिए कि क्या यह अब परिवर्तन बदलता है, फिर से स्थिति चलाने की कोशिश करें। यदि आपको कुछ भी दिखाई नहीं देता है तो इस पोस्ट का अनुसरण करें: stackoverflow.com/questions/2363197/… सबसे विशेष रूप से उन फाइलों की एक सूची प्रदर्शित करने के लिए कमांड है, जिनके पास धारणा-नोचेंज हैं: git ls-files -v | grep '^[[:lower:]]'यदि कुछ भी मदद नहीं करता है तो आपको अधिक विवरण के साथ एक प्रश्न बनाना चाहिए ताकि हम मदद कर सकें आप।
एंड्रे कुन्हा

7

इस सवाल का जवाब देने के लिए हमारे पास पर्याप्त नहीं है इसलिए मैं आपको कई अनुमान दूंगा:

1) आपने अपने परिवर्तनों को टाइप करने के लिए ठीक किया: git stash pop

2) आपके परिवर्तन हुए और आपने उन्हें प्रतिबद्ध किया, आपको अपनी प्रतिबद्धता को देखने में सक्षम होना चाहिए git log

3) आपके द्वारा किए गए परिवर्तन किसी प्रकार के git reset --hardया अन्य थे, आपके परिवर्तन रिफ्लॉग में हो सकते हैं, git reflog --allयदि आपने कभी खोजा हो तो रेफरी को चैक आउट या चेरी-उठाकर टाइप करें ।

4) आपने कई बार एक ही रेपो की जाँच की है, और आप गलत हैं।


1) कोई छिपाने की जगह नहीं मिला 2) मेरे पास बदलाव और प्रतिबद्ध थे, तो क्या मैं फिर से कर सकता हूं? ३) मैंने ऐसा नहीं किया ४) मैं सही रेपो में हूँ
somerandomguy

यदि आपने परिवर्तन किए थे और उन्हें प्रतिबद्ध किया था, तो आप अगले चरण में जाने के लिए अच्छे हैं, धक्का दें या जो भी आपके वर्कफ़्लो हैं ... आप फिर से प्रतिबद्ध कर सकते हैं यदि आपके पास अधिक परिवर्तन हैं, तो आप git commit --amendअपने अंतिम परिवर्तनों में अपने नए बदलाव भी कर सकते हैं , अगर आप पहले से ही अपनी प्रतिबद्धता साझा कर चुके हैं तो ऐसा मत करो।
ग्रैडी प्लेयर

प्रोजेक्ट रेपो की सफाई के बाद टर्मिनल को बंद करना और फिर से खोलना मेरे लिए था।
एडी

4

इस तरह एक मजेदार बात हो रही थी। एक्लिप्स के फ़ोल्डर में नजरअंदाज के रूप में ग्रहण केपलर के गिट प्लगइन स्वचालित रूप से मेरे सभी प्रोजेक्ट फ़ोल्डरों को चिह्नित कर रहा था।

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


किसी भी विचार कैसे यह मुद्दा तय किया जा सकता है जब यह intellij में होता है?
मास्टरजॉय

3

टी एल; डॉ; क्या आप भी सही भंडार पर हैं?

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

वास्तव में मेरे मशीन पर, मैं दो अलग Git संग्रह था repo1और repo2नामित एक ही रूट निर्देशिका में विन्यस्त source। ये दो रिपॉजिटरी अनिवार्य रूप से दो उत्पादों के रिपॉजिटरी हैं जिन्हें मैं अपनी कंपनी में बंद और चालू करता हूं। अब बात यह है कि एक मानक दिशानिर्देश के रूप में, मेरी कंपनी में सभी उत्पादों के स्रोत कोड की निर्देशिका संरचना बिल्कुल समान है।

तो बिना एहसास के मैंने एक बिल्कुल उसी नाम की फाइल को संशोधित किया repo2जिसमें मैं बदलने वाला था repo1। इसलिए, मैं बस git statusपर कमांड चलाता रहा repo1और यह वही संदेश देता रहा

शाखा मास्टर पर

कुछ भी नहीं करने के लिए, स्वच्छ निर्देशिका काम कर रहा है

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

इतना सामान्य मामला नहीं। लेकिन आप कभी नहीं जान पाते!


3

WinMerge टूल के जरिए अंतर ट्रांसफर करके फाइल बदलते समय हमने विंडोज पर ऐसा किया है। जाहिरा तौर पर WinMerge (कम से कम जिस तरह से यह मेरे कंप्यूटर पर कॉन्फ़िगर किया गया है) कभी-कभी इसे बदलने वाली फ़ाइलों के टाइमस्टैम्प को अपडेट नहीं करता है।

विंडोज पर, git स्टेटस , का उपयोग करता है, अन्य बातों के अलावा, एक फ़ाइल का समय स्टैम्प और फ़ाइल के आकार में परिवर्तन यह निर्धारित करने के लिए कि फ़ाइल बदल गई है या नहीं। इसलिए जब से टाइम स्टैम्प अपडेट नहीं किया गया था, तब तक इसके पास केवल फ़ाइल का आकार था दुर्भाग्य से सवाल में फ़ाइल एक सरल संस्करण फ़ाइल जहां सामग्री से बदल था 7.1.2 के लिए 7.2.0 । दूसरे शब्दों में, फ़ाइल का आकार भी अपरिवर्तित रहा। अन्य फ़ाइलों को भी WinMerge द्वारा बदल दिया गया था और उनके समय के टिकटों को अपडेट नहीं किया गया था, लेकिन परिवर्तन के ठीक बाद गिट स्थिति का पता लगाने के बाद एक अलग आकार था ।


3

उदात्त पाठ -3 का उपयोग करते समय मेरे पास एक समान मुद्दा था । कोड में नए बदलाव करने और उसे सहेजने के बाद, जब मैंने git ऐड की कोशिश की ।/status कमांड देता है कि प्रतिक्रिया "शाखा पहले से ही अद्यतित" थी। मुझे पता चला, पाठ संपादक में अपडेट को बचाने के बावजूद, फ़ाइल वास्तव में अपरिवर्तित थी। अन्य संपादक में फ़ाइल खोलना और मेरे लिए काम किए गए परिवर्तनों को सहेजना।


यह मेरे साथ भी हो रहा है
क्लोअर

2

क्या आपने अपने शेल के तहत निर्देशिका को बाहर स्थानांतरित किया था? यह तब हो सकता है जब आपने अपने प्रोजेक्ट को बैकअप से पुनर्स्थापित किया हो। इसे ठीक करने के लिए, बस cdबाहर और पीछे में:

cd ../
cd -

वाह, यह मामला था। पागल। एक और चाल बिल्कुल काम नहीं किया!
मकाले

1

सामान्य तौर पर इस समस्या के साथ, पहले जांच लें कि आप जिस फ़ाइल के बारे में सोचते हैं, उसे संपादित कर रहे हैं! मुझे यह समस्या तब हुई जब मैं स्रोत फ़ाइल के बजाय एक ट्रांसप्लड जावास्क्रिप्ट फ़ाइल संपादित कर रहा था (ट्रांसप्लड संस्करण स्रोत नियंत्रण में नहीं था)।


यह उल्लेख करने के लिए धन्यवाद! मैं इतना आश्वस्त था कि मैं सही फ़ाइल को अपडेट कर रहा था। नहीं। चेहरा हथेली
एशले ग्रेनन

1

मेरे Git क्लाइंट (Gitg) ने मेरे लिए इस समस्या का कारण बना। सामान्य आदेश जो मैं आमतौर पर चलाऊंगा वह काम नहीं कर रहे थे। यहां तक ​​कि परियोजना में हर फाइल को छूने से काम नहीं चला।

मुझे इसे ठीक करने का एक तरीका मिला और मुझे अभी भी यकीन नहीं है कि इसका कारण क्या है। अपनी परियोजना निर्देशिका की प्रतिलिपि बनाएँ। गुम हुई फाइलें कॉपी की गई डायरेक्टरी में दिखाई देंगी git status। नाम बदलने का भी यही काम हो सकता है।


1

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


1

जब आप किसी फ़ाइल को Visual Studio में संपादित करते हैं, तो यह फ़ाइल में सहेजे जाने पर भी तुरंत परिवर्तन में सूचीबद्ध हो जाता है। इसलिए आपको केवल फ़ाइल को मैन्युअल रूप से सहेजने की जरूरत है (वर्तमान में प्रदर्शित फ़ाइल के लिए Ctrl + S या सभी प्रोजेक्ट फ़ाइलों के लिए Ctrl + Shift + S) और git bash उन्हें उठाएगा।


.jsविजुअल स्टूडियो कोड के साथ काम करते हुए, फ़ाइल में टिप्पणी जोड़ते समय यह मेरे लिए काम करता है । धन्यवाद।
SnuKies

0

आपने किस प्रकार की फ़ाइल अपलोड करने का प्रयास किया है? अब मुझे अपने css संशोधन को अपलोड करने के लिए लगभग एक घंटा लगता है। लेकिन यह css एक स्टाइल फाइल से संकलित है इसलिए git ने इसे अनदेखा कर दिया। जब मैंने स्टाइल सोर्स को बदल दिया तब सब कुछ काम कर गया।

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


0

कभी-कभी निर्भर करते हैं और गिट संस्करण द्वारा और यदि आप करना भूल जाते हैं git add .

रिपॉजिटरी उपयोग पर अपने परिवर्तन के बारे में जांचने के लिए हमेशा git statusसभी अनुपयोगी और परिवर्तित फ़ाइलों को दिखाएं। क्योंकि git diffकेवल जोड़ी गई फाइलें दिखाते हैं।


0

सुनिश्चित करें कि विंडोज के लिए गिट बैश के अंदर से सिम्बलिंक ( ) बनाएं ln -s source dest

यह सिम्लिंक नहीं करता है, लेकिन स्रोत के डीईईपी को नियति को कॉपी करता है

मुझे विंडोज़ (संस्करण 2.16.2) के लिए गिट बैश से एक MINGW64 टर्मिनल पर ओपी के समान व्यवहार का अनुभव हुआ कि यह महसूस करने के लिए कि मेरे 'संपादित' परिवर्तन वास्तव में मूल निर्देशिका में थे, और मेरे git bash कमांड एक गहरी प्रतिलिपि के भीतर से थे जो कि बने रहे थे अपरिवर्तित।


0

मुझे भी यही समस्या थी। पता चला कि मेरे पास परियोजना की दो प्रतियां थीं और मेरा टर्मिनल गलत प्रोजेक्ट फ़ोल्डर में था!


0

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


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

मुझे नहीं पता कि यह क्यों काम करता है और यह कैसे काम करता है, लेकिन यह मेरे लिए काम करता है धन्यवाद
अमित बिष्ट 8:30

0

मुझे यहाँ भी यही समस्या है कि VS2015 ने मेरी js फाइलों के बदलावों को नहीं पहचाना, रिपॉजिटरी सेटिंग्स से रिमूव को हटाया और फिर रिमोट URL पाथ को जोड़कर मेरी समस्या का समाधान किया।


0

जब मैं vi संपादक के साथ सर्वर में एक पैच फ़ाइल बनाता था तो मेरे पास एक समान मुद्दा था। ऐसा लगता है कि मुद्दा रिक्ति के साथ था। जब मैंने स्थानीय से पैच को धक्का दिया, तो तैनाती उचित थी।


-1

मेरे पास यह मुद्दा था। मेरा काम नहीं कर रहा था क्योंकि मैं अपनी परियोजना के अंदर .it फ़ोल्डर में अपनी फाइलें डाल रहा था।


-1

मेरे मामले में, git reset --hardहटाई गई फ़ाइलों को करने और कुछ खाली फ़ोल्डर छोड़ दिए गए हैं। सामग्री का निरीक्षण करने के बाद, मैंने देखा कि निर्देशिकाएं खाली थीं।

हालाँकि git खाली फ़ोल्डर को अनदेखा करता है। (सुधार, गिट सभी निर्देशिकाओं की उपेक्षा करता है क्योंकि यह सामग्री को ट्रैक करता है, खाली फ़ोल्डर सामग्री नहीं है।)


-4

git add * तब उपयोग करने का प्रयास करेंgit commit


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