git - उनल - लोकेशन ट्रैकर




गिट में किसी फ़ाइल में परिवर्तनों को ट्रैक करना और अनदेखा करना बंद करना कैसे है? (9)

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

मैंने अपने LOCAL .gitignore *.csproj .gitignore , लेकिन फाइलें पहले ही रेपो में हैं।

जब मैं गिट स्थिति टाइप करता हूं, तो यह मेरे परिवर्तन को csproj दिखाता है, जिसमें मुझे पैच के ट्रैक को ट्रैक करने या सबमिट करने में कोई दिलचस्पी नहीं है।

मैं अपने व्यक्तिगत रेपो से इन फ़ाइलों को "ट्रैकिंग" कैसे हटा सकता हूं (लेकिन उन्हें स्रोत में रखें ताकि मैं उनका उपयोग कर सकूं) ताकि जब मैं कोई स्थिति करता हूं (या पैच बनाते हैं) में परिवर्तन नहीं दिखता है?

क्या इस स्थिति को संभालने के लिए कोई सही / कैननिक तरीका है?


अपना .gitignore भूल गए?

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

git rm --cached -r .

सुनिश्चित करें कि आप परियोजना की जड़ पर हैं।

फिर आप सामान्य कर सकते हैं

जोड़ना

git add .

कमिट

git commit -m 'removed all and added with git ignore'

धक्का दें

git push origin master

निष्कर्ष

उम्मीद है कि इससे उन लोगों को मदद मिलेगी जिन्हें अपने .gitignore बदलाव करना है या इसे सभी को भूल जाना है।

  • यह पूरे कैश को हटा देता है
  • आपके .gitignore पर दिखता है
  • उन फ़ाइलों को जोड़ता है जिन्हें आप ट्रैक करना चाहते हैं
  • अपने रेपो को धक्का देता है

कुछ समय बचाने के लिए जो नियम आप अपने .gitignore में जोड़ते हैं, उन्हें एकाधिक फ़ाइलों / फ़ोल्डर्स यानी हटाने के लिए उपयोग किया जा सकता है

git rm --cached app/**/*.xml

या

git rm --cached -r app/widgets/yourfolder/

आदि


जैसा कि अन्य उत्तरों में बताया गया है, चयनित उत्तर गलत है।

किसी अन्य प्रश्न का answer बताता है कि यह स्किप-वर्कट्री हो सकता है जिसकी आवश्यकता होगी।

git update-index --skip-worktree <file>

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

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

गिट को इन फ़ाइलों में परिवर्तनों का पता लगाने से रोकने के लिए आपको यह आदेश भी उपयोग करना चाहिए:

git update-index --assume-unchanged [path]

आप शायद क्या करना चाहते हैं: (नीचे से @ रयान टेलर जवाब )

  1. यह गिट को बताने के लिए है कि आप फ़ाइल या फ़ोल्डर का अपना स्वतंत्र संस्करण चाहते हैं। उदाहरण के लिए, आप उत्पादन / स्टेजिंग कॉन्फ़िगरेशन फ़ाइलों को ओवरराइट (या हटाएं) नहीं चाहते हैं।

git update-index --skip-worktree <path-name>

पूरा उत्तर इस यूआरएल में है: http://source.kohlerville.com/2009/02/untrack-files-in-git/


मुझे लगता है कि आप एक अलग फ़ोल्डर या बिन फ़ोल्डर में सभी फ़ाइलों को अलग करने के बजाय, प्रत्येक फाइल को अलग से चुनने के बजाय पूछ रहे हैं।

आप इस कमांड का उपयोग कर सकते हैं:

git rm -r -f /<floder-name>\*

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

सुनिश्चित करें कि आपके पास आने वाले कामों के लिए आपका .gitignore तैयार है।
दस्तावेज़ीकरण: जीआईटी आरएम


मुझे लगता है कि आप गिट tacking से एक फ़ाइल को हटाने की कोशिश कर रहे हैं। इसके लिए मैं नीचे आदेश की सिफारिश करेंगे।

गिट अपडेट-इंडेक्स - केस-अपरिवर्तित

एक्स-गिट अपडेट-इंडेक्स - वॉल्यूम-अपरिवर्तित .gitignore .idea / compiler.xml


यह एक दो कदम प्रक्रिया है:

  1. फ़ाइल / फ़ोल्डर की ट्रैकिंग निकालें - लेकिन उन्हें डिस्क पर रखें - का उपयोग करें

    git rm --cached 
    

    अब वे "बदले" के रूप में दिखाई नहीं देते हैं लेकिन फिर भी दिखाए जाते हैं

        untracked files in  git status -u  
    
  2. उन्हें .gitignore जोड़ें


समस्या ऑपरेशन के आदेश के कारण हो सकती है। यदि आपने पहले .gitignore को संशोधित किया है, तो git rm --cached xxx, आपको इस समस्या का सामना करना पड़ सकता है।

सही समाधान:

  1. गिट आरएम - कैश xxx
  2. .gitignore संशोधित

आदेश invariant!

संशोधन के बाद .gitignore पुनः लोड!


3 विकल्प हैं, आप शायद # 3 चाहते हैं

1. यह आपके लिए स्थानीय फाइल रखेगा, लेकिन खींचने पर इसे किसी और के लिए हटा देगा।

git rm --cached <file-name> या git rm -r --cached <folder-name>

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

git update-index --assume-unchanged <path-name>

3. यह गिट को बताना है कि आप फ़ाइल या फ़ोल्डर का अपना स्वतंत्र संस्करण चाहते हैं। उदाहरण के लिए, आप उत्पादन / स्टेजिंग कॉन्फ़िगरेशन फ़ाइलों को ओवरराइट (या हटाएं) नहीं चाहते हैं।

git update-index --skip-worktree <path-name>

यह जानना महत्वपूर्ण है कि git update-index गिट के साथ प्रचार नहीं करेगा , और प्रत्येक उपयोगकर्ता को इसे स्वतंत्र रूप से चलाने की आवश्यकता होगी।






git