git अद्यतन-अनुक्रमणिका - अपरिवर्तित रिटर्न "फ़ाइल को चिह्नित करने में घातक"


133

मुझे इस पोस्ट पर ओपी के रूप में एक ही समस्या है , लेकिन मुझे उत्तर सही नहीं समझ में आया (मुझे नहीं लगता कि यह बताता है कि स्थिति को कैसे ठीक किया जाए)

मैं ऐसा करता हूं और यह त्रुटि मिलती है:

$ git update-index --assume-unchanged web.config
fatal: Unable to mark file web.config
  1. फ़ाइल IS रिपॉजिटरी में जोड़ा गया है

  2. यह अंदर नहीं है .git/info/exclude

  3. यह अंदर नहीं है .gitignore(यह था, लेकिन मैंने इसे निकाल लिया, फिर web.config का उपयोग करने के लिए मजबूर किया गया git add -f web.config, प्रतिबद्ध किया गया, और उन परिवर्तनों को रेपो में धकेल दिया)

  4. जब मैं gs ls-files करता हूं, तो यह नहीं होता है

तो मैं क्या ठीक कर सकता हूं?


1
संदर्भित प्रश्न में स्वीकृत उत्तर को फिर से पढ़ें: यह आउटपुट में नहीं दिखेगा git ls-files -o। यदि हां, तो यह रेपो में नहीं है।
Eckes

मेरी टाइपो, यह सूची में नहीं है, और यह रेपो में सबसे निश्चित रूप से है
करेन

जवाबों:


108

मुझे आपके समान ही समस्या हो रही थी, और आपने जो ऊपर संकेत किया था, उसी चार चरणों का पालन किया था, और इसके परिणाम समान थे। इसमें यह तथ्य शामिल था कि निष्पादित करते समय मेरी फ़ाइल सूचीबद्ध थी git ls-files -o। हालाँकि मेरे मामले में, मैंने git update-index --assume-unchangedएक फ़ाइल के खिलाफ निष्पादन की कोशिश भी की थी जिसे निष्पादित करते समय सूचीबद्ध नहीं किया गया था ls-files -o, और मुझे अभी भी वही त्रुटि मिली " fatal: Unable to mark file"।

मैंने सोचा कि शायद यह एक बग था, और गिट के नवीनतम संस्करण को डाउनलोड किया, लेकिन इससे कोई फायदा नहीं हुआ।

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

ध्यान दें कि यह विंडोज के लिए Git के साथ था, इसलिए आप परिणाम अन्य प्लेटफार्मों के साथ भिन्न हो सकते हैं।


4
आपका बहुत बहुत धन्यवाद! यह काम किया! मुझे लगता है कि मैं पहले सभी निचले मामले का उपयोग कर रहा था, या फ़ोल्डर के लिए सीडी और फिर इस कमांड का उपयोग करने की कोशिश की।
करेन

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

1
धन्यवाद, इसने अप्रत्यक्ष रूप से मुझे एक परियोजना में कुछ बुरी शेल स्क्रिप्ट की खोज करने में मदद की। यदि कोई पथ मौजूद नहीं है, तो यह विफल हो जाएगा! :)
uchuugaka

यह भी ध्यान दें कि यह कमांड अनइवरेड फाइलों के लिए काम नहीं करेगा। यदि आपके पास एक ऐसी फाइल है जो रिपॉजिटरी में मौजूद नहीं है तो इसे इगिटाइनोर में नजरअंदाज किया जा सकता है, और क्या मुझे लगता है कि मुझे यह टाइप करने में मूर्खतापूर्ण लगता है, लेकिन मुझे लगता है कि यह किसी को मेरे जैसा बेवकूफ बनाने में मदद कर सकता है। :)
जेसी आइवी

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

54

मैं एक ही मुद्दे पर था MAC। केस-सेंसिटिविटी मेरे लिए कोई समस्या नहीं थी - समस्या यह थी कि मुझे पहले अपना गेट रीसेट करने की आवश्यकता थी:

संकट:

 git update-index --assume-unchanged index.php
 fatal: Unable to mark file index.php

उपाय:

git reset HEAD
Unstaged changes after reset:
M   index.php
git update-index --assume-unchanged index.php

2
मुझे मैक पर समान समस्या हो रही है, और सुझाए गए वर्कअराउंड में से किसी ने भी मेरे लिए काम नहीं किया। कोई उपाय? मैं अपनी मशीन पर अस्थायी रूप से केवल एक निर्देशिका को ट्रैक करने से रोकने की कोशिश कर रहा हूं, नाम है dir intellij_idea_project_files /। जाहिरा तौर पर इस निर्देशिका में सभी फाइलें एक को छोड़कर ठीक से चिह्नित की गई हैं, और वह my_project_name.iml है।
जावेद सादिक़ज़ादेह

1
एक ही समस्या थी और यह समाधान है जो मेरे लिए काम करता है, न कि केस-सेंसिटिव के बारे में
CesarPim

मैं मैक पर भी हूं और मेरे लिए "समाधान" फ़ाइल को हटाना था। (मैं इसे उत्तर के रूप में पोस्ट करूंगा लेकिन मुझे यकीन नहीं है कि क्या हुआ, शायद बाद में।) कुछ अजीब हुआ। गिट कह रहा था कि फाइल बदल दी गई थी (मैं चाहता था --skip-worktree)। मुझे स्थानीय परिवर्तनों से छुटकारा मिल गया, git restore .लेकिन फिर भी स्किप ने त्रुटि दी। अंत में मैंने फ़ाइल को हटाने की कोशिश की। चौंककर, जीआईटी ने नहीं कहा कि एक बदलाव था। तो स्पष्ट रूप से कुछ कायरता हुई है क्योंकि गिट निश्चित रूप से इसे ट्रैक कर रहा था और मैंने इसे निश्चित रूप से हटा दिया था और यह निश्चित रूप से नहीं कहा था कि यह एक बदलाव था।
कप्तान मैन

25

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

गलत -

git update-index --assume-unchanged directory-name

सही बात -

git update-index --assume-unchanged directory-name/

आगे के स्लैश (/) को नोट करें।


1
धन्यवाद, लेकिन जब मैं ऐसा करता हूं तो मुझे "अनदेखा पथ निर्देशिका-नाम /" मिलता है
डेमियन

@ अभिभावक निर्देशिका के बजाय पूर्ण फ़ाइल पथ निर्दिष्ट करें।
नाहिद

6

घातक: फ़ाइल को चिह्नित करने में असमर्थ स्थानीयकरण / el-GR.js

आप क्या कर सकते हैं:

  1. अपने स्थानीय में मौजूद फ़ाइल (GITBASH में) सही रास्ते पर जाएँ
  2. सूचकांक को अपडेट करें $git update-index --assume-unchanged <file name>

इससे मुझे मदद मिली! :)


2
$ git update-index --assume-unchanged ./.idea/vcs.xml fatal: Unable to mark file .idea/vcs.xml $ cd .idea git update-index --assume-unchanged .काम किया, धन्यवाद!
AVProgrammer

4

यदि आपके पथ में स्थान हैं, तो आपको यह त्रुटि मिल सकती है, भले ही आपके पास केसिंग अधिकार हो।

यह "घातक" त्रुटि का परिणाम है:

git update-index --assume-unchanged code/Solution Files/WebEssentials-Settings-json

इसे ठीक करने के लिए, बस पथ के चारों ओर उद्धरण जोड़ें।

git update-index --assume-unchanged "code/Solution Files/WebEssentials-Settings-json"

मेरे मामले में मेरे पास / पीछे था।
एरिक बर्गस्टेड

4

मेरी समस्या यह थी, कि मैंने एक * वाइल्डकार्ड के साथ कमांड की कोशिश की, यह मानते हुए कि यह पुनरावर्ती होगा, लेकिन यह नहीं था।

तो मैंने जो किया था

$ git reset HEAD
Unstaged changes after reset: 
M   .gradle/1.9/taskArtifacts/cache.properties.lock
M   .gradle/1.9/taskArtifacts/fileHashes.bin
M   .gradle/1.9/taskArtifacts/fileSnapshots.bin
M   .gradle/1.9/taskArtifacts/outputFileStates.bin
M   .gradle/1.9/taskArtifacts/taskArtifacts.bin

क्रियान्वित

$ git update-index --assume-unchanged .gradle/1.9/taskArtifacts/*

मेरे लिए तब काम किया और परिणाम में ओपी और मेरी समस्या नहीं थी।


4

मुझे यह समस्या तब हुई जब मैं * .orig फ़ाइलों को अनट्रैक करने का प्रयास कर रहा था।

यह वही है जो मैंने उन्हें अनट्रैक करने के लिए किया था:

$git reset -- *.orig

अगर वह काम नहीं करता है:

$git clean -fd

5
लोगों को कमांड को निष्पादित करने के लिए पूछना खतरनाक है बिना यह बताए कि यह कमांड फ़ाइलों को हटा देगा। $ git स्वच्छ -fd
एचएस राठौर

4

सुनिश्चित करें कि फ़ाइल को git repo में जोड़ा गया है, अगर git repo में फ़ाइल नहीं जोड़ें और फिर कोशिश करें कि यह काम करेगा।


3

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

जो फाइलें बदलती हैं उन पर प्रयोग न करें।

क्षमा करें उस समाचार का लाने वाला (उस दस्तावेज को बदलने के लिए मेरे पास प्रक्रिया में एक पैच है)।


1
फिर किसी को फ़ाइल को अपडेट करने के लिए इसे 'ट्रैक न करें' के रूप में कैसे माना जाता है?
javadba


thx - उस पर upvoted: मैं वास्तव में यहाँ पोस्ट करने के बाद ही इसका इस्तेमाल किया था। काम करता है।
जवदाबा

ध्यान दें कि git rm --cached filenameफ़ाइल को तब हटाया जाएगा जब अन्य लोग खींचते हैं
रयान टेलर

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

3

मेरे मामले में, मैंने ऊपर दिए गए किसी भी तरीके का उपयोग करने की कोशिश की, लेकिन कोई भाग्य नहीं।

कई प्रयासों के बाद, मैंने बस अपनी फ़ाइल को अनुक्रमणिका में जोड़ने के लिए सोचा।

git add myfile.php

गिट ने इस कार्रवाई से इनकार कर दिया लेकिन उन्होंने मुझे इसे जबरन बनाने की सलाह दी।

git add myfile.php -f

और वह मेरे लिए काम किया।


2

सुनिश्चित करें कि आपके पास "web.config" चेक इन है।

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


1

शायद किसी के लिए उपयोगी हो। मैं एक ही समस्या थी और कोई वाक्यविन्यास समस्या नहीं थी, रिक्त स्थान के साथ कोई नाम नहीं था, कोई समस्या नहीं थी, और गिट रीसेट कमांड ने काम नहीं किया। मैं Apache www के अंदर एक फोल्डर से आ रहा था और Apache सर्विस बंद कर दी गई थी। फिर से अपाचे सेवा शुरू की और त्रुटि दूर हो गई है


1

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

पहले सुनिश्चित करें कि फ़ाइल को चलाकर ट्रैक किया गया है

git ls-files | grep relative_path/to/file

यदि यह आपकी फ़ाइल नहीं दिखा रहा है, तो आपको इसे पहले जोड़ना होगा:

git add relative_path/to/file

यदि यह आपकी फ़ाइल दिखाता है, या आपने पहले ही उस फ़ाइल को git में जोड़ दिया है, तो आपको git मान कमांड को सामान्य रूप से चलाने में सक्षम होना चाहिए:

git update-index --skip-worktree relative_path/to/file

या फ़ोल्डरों के लिए

git update-index --skip-worktree relative_path/to/folder/

यदि आपकी फ़ाइल को चलाने के द्वारा अनदेखा किया जाता है, तो आप देख सकते हैं

git ls-files -v | grep ^S

एस चरित्र स्किप की गई फ़ाइलों का प्रतिनिधित्व करता है।


0

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


0

जांचें कि क्या फ़ाइल को चिह्नित किया जाना मौजूद है और सही तरीके से वर्तनी है, विशेष रूप से फ़ाइल पथ और फ़ाइल विभाजक। विंडोज़ सिस्टम और लिनक्स सिस्टम के फ़ाइल विभाजक अलग-अलग दिशाओं में हैं।


1
गलत नहीं है, यह जवाब वास्तव में सवाल के लिए कुछ भी नहीं जोड़ता है। आपके सभी सुझावों को पहले ही मौजूदा उत्तरों में लाया जा चुका है।
मैट

0

मैंने पाया कि कभी-कभी यह काम नहीं करता है क्योंकि आपने फ़ाइल को अपने .gitignore पर पहले ही भेज दिया है और एक पुश या पुल बनाया है। आपको केवल पुश करने की आवश्यकता है और जब आप स्थानीय रूप से फ़ाइल को संशोधित करते हैं तब भी आपकी फ़ाइल को बाद के कमिट पर अनदेखा किया जाना चाहिए।


0

मैं विंडोज़ में साइबरविन के साथ एक ही मुद्दा था। पूर्ण फ़ाइल पथ दे रहा है

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