Git क्लोन के बाद सीधे रूप में दिखाई जा रही फाइलें


227

मैं इस समय एक रिपॉजिटरी के साथ एक मुद्दा बना रहा हूं, और हालांकि मेरा गिट-फू आमतौर पर अच्छा है, मैं इस मुद्दे को हल करने के लिए प्रतीत नहीं कर सकता।

जब मैं इस रिपॉजिटरी को क्लोन करता हूं, तो cdरिपॉजिटरी में, git statusकई फाइलों को बदलकर दिखाता है। नोट: मैंने किसी भी संपादक या किसी भी चीज़ में भंडार नहीं खोला है।

मैंने इस गाइड का अनुसरण करने की कोशिश की: http://help.github.com/dealing-with-lineendings/ , लेकिन इसने मेरे मुद्दे पर बिल्कुल भी मदद नहीं की।

मैंने git checkout -- .कई बार कोशिश की है, लेकिन ऐसा कुछ भी नहीं लगता है।

मैं एक मैक पर हूँ, और रिपॉजिटरी में कोई सबमॉड्यूल नहीं हैं।

फाइलसिस्टम मैक पर "जर्नलेड HFS +" फाइलसिस्टम है और केस-संवेदी नहीं है। फाइलें एक-लाइन और लगभग 79 KB प्रत्येक (हां, आपने सही सुना), इसलिए git diffविशेष रूप से उपयोगी नहीं है। मैंने ऐसा करने के बारे में सुना है git config --global core.trustctime falseजो मदद कर सकता है, जिसे मैं उस समय रिपॉजिटरी के साथ कंप्यूटर पर वापस लाने की कोशिश करूँगा।

मैंने तथ्यों के साथ फाइल सिस्टम का विवरण बदल दिया है! और मैंने वह git config --global core.trustctime falseट्रिक आजमाई जो बहुत अच्छी तरह से काम नहीं करती थी।

जवाबों:


141

मैं एक ही समस्या पर था MAC एक भंडार क्लोनिंग के बाद। यह मान लिया जाएगा कि सभी फाइलें बदल दी गई थीं।

चलने के बाद git config --global core.autocrlf input, यह अभी भी सभी फाइलों को चिह्नित कर रहा था। एक फिक्स की तलाश करने के बाद, मैं .gitattributesहोम डाइरेक्टरी में फाइल भर आया, जिसमें निम्नलिखित थे।

* text=auto

मैंने इसे टिप्पणी की और अब से किसी भी अन्य क्लोन रिपॉजिटरी पर काम करना ठीक था।


5
धन्यवाद! मैंने आखिरकार शाम को toggling core.autocrlf और apply.whitespace खर्च करने के बाद यह पाया। यह काम किया। धन्यवाद।
xer0x

5
.Gitattributes में हमलावर लाइन से आया मैथियास Bynen के dotfiles , मामले में किसी और को इस भर आता है।
सीनपोनिल

31
क्या कोई इस विशेष विन्यास पर अधिक प्रकाश डाल सकता है? क्या करता * text=autoहै? इसे हटाने का क्या मतलब है .gitattributes? मैं देख रहा हूं कि यह मेरे लिए इस समस्या को ठीक करता है, लेकिन मुझे यकीन नहीं है कि यह ऐसा क्यों करता है, और यह वास्तव में क्या कर रहा है, और संभवत: यह किन मुद्दों को पैदा कर रहा है?
डेनिस

6
@ डेनिस यह सेटिंग लाइन एंडिंग को सामान्य करने में मदद करती है, इसलिए इसे हटाने की संभावना है कि यह सही उत्तर नहीं है। देखें इस सवाल का जवाब और इस लेख । नीचे @Arrowmaster का जवाब मेरे लिए अधिक उपयोगी था। मैंने उपयोग किया git addऔर git commitजो फ़ाइल को सामान्य कर दिया और समस्या से छुटकारा पा लिया।
jtpereyda

4
git config --global core.autocrlf inputयह मेरे लिए तय है। धन्यवाद।
dimiguel

89

मैं समझ गया। अन्य सभी डेवलपर्स उबंटू (मुझे लगता है) पर हैं और इस प्रकार केस-संवेदी फ़ाइल सिस्टम हैं। मैं, हालांकि, नहीं (जैसा कि मैं एक मैक पर हूँ)। वास्तव में, सभी फ़ाइलों में जुड़वाँ बच्चे थे जब मैंने उनका उपयोग किया था git ls-tree HEAD <path>

मैं उनमें से एक को हल करने के लिए मिल जाएगा।


क्या उन्होंने कभी इसे सुलझाया? मैं संभवतः एक ही मुद्दा रहा हूँ।
जोश जॉनसन

8
हाँ, किसी को केस-संवेदी फ़ाइल सिस्टम के साथ सभी को हटाने के लिए प्राप्त करें, लेकिन फ़ाइलों के प्रत्येक सेट से एक जिसमें केस-असंवेदनशील फाइल सिस्टम पर फ़ाइल नाम डुप्लिकेट होगा।
सैम इलियट

1
उबंटू से मैक पर जाने के बाद से बस उसी मुद्दे में भाग गया। धन्यवाद, आपके जवाब ने सिर पर कील ठोक दी। आशा है कि उत्थान इसे पहले स्थान पर धकेल देगा। :-)
chmac

1
@ यही कारण है कि कई उत्तर हैं। मैंने अपने मामले में आवेदन करने वाले को स्वीकार कर लिया, जो अनुचित नहीं है।
सैम इलियट

1
यह मेरा मुद्दा था - केस असंवेदनशील MacOS। हालाँकि git ls-tree HEAD <path>केवल एक फ़ाइल दिखाई गई। हालांकि, मैं GitHub.com UI में डुप्लिकेट फ़ाइलों को देखने में सक्षम था, और एक संस्करण को हटाने के लिए उस UI का उपयोग भी करता था।
ओरियन एल्जेनिल

74
git config core.fileMode false

मेरे मामले में इस समस्या को हल किया

https://git-scm.com/docs/git-config

टी एल; डॉ;

core.fileMode

यदि गलत है, तो सूचकांक और काम करने वाले पेड़ के बीच निष्पादन योग्य अंतर को अनदेखा किया जाता है; FAT जैसी टूटी हुई फाइल सिस्टम पर उपयोगी। Git-update-index (1) देखें।

डिफ़ॉल्ट सही है, सिवाय git-clone (1) या git-init (1) के जांच करेगा और कोर सेट करेगा। यदि सही है तो रिपॉजिटरी बनाए जाने पर Mile झूठी।


2
लेकिन यह क्या करता है ??
सीवेल

1
मैं यह भी जानना चाहूंगा कि यह क्या करता है, क्योंकि यह मेरे लिए भी काम करता है।
डोनाटो

2
जब मैंने किया git diff, मैंने पाया कि परिवर्तन केवल फ़ाइल मोड में थे। गिट पिक, chmod -R 777 .जिसके कारण जब मैं अपनी परियोजना को चलाता था और इस विन्यास ने मुझे git stackoverflow.com/q/1580596/6207775
आयुषी

1
लिंक टूट गया है ( "क्षमा करें, हम आपकी गुठली नहीं खोज सकते" )।
पीटर मोर्टेंसन

बाकी जवाबों के लिए काम नहीं किया, लेकिन यह जादू किया था!
पटेल से

53

मुझे लगता है कि आप विंडोज का उपयोग कर रहे हैं। उस GitHub पृष्ठ से जुड़ा हुआ है जिसका विवरण आपके पास है। समस्या यह है कि CR + LF लाइन एंडिंग रिपॉजिटरी के लिए पहले से ही प्रतिबद्ध है और क्योंकि आपके पास core.autocrlf या तो सही या इनपुट पर सेट है , Git लाइन-एंडिंग को LF में बदलना चाहता है, जिससे git statusपता चलता है कि हर फाइल बदल गई है।

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

git config core.autocrlf false

यदि यह एक भंडार है, जिसमें आप सक्रिय रूप से शामिल होंगे और इसमें बदलाव कर सकते हैं। आप सीआर + एलएफ के बजाय एलएफ का उपयोग करने के लिए रिपॉजिटरी में सभी लाइन एंडिंग को बदलने वाले एक कमिट करके समस्या को ठीक करने की इच्छा कर सकते हैं और फिर भविष्य में इसे फिर से होने से रोकने के लिए कदम उठा सकते हैं।

निम्नलिखित को सीधे gitattributes मैन पेज से लिया गया है और इसे एक साफ काम करने वाली डायरेक्टरी से पहले से तैयार किया जाना चाहिए।

echo "* text=auto" >>.gitattributes
rm .git/index     # Remove the index to force Git to
git reset         # re-scan the working directory.
git status        # Show files that will be normalized.
git add -u
git add .gitattributes
git commit -m "Introduce end-of-line normalization"

यदि कोई भी फ़ाइलें जो सामान्यीकृत नहीं होनी चाहिए git status, वे चलने से पहले अपनी पाठ विशेषता को परेशान कर दें git add -u

manual.pdf      -text

इसके विपरीत, Git का पता नहीं लगाने वाली पाठ फ़ाइलों को सामान्य रूप से मैन्युअल रूप से सक्षम किया जा सकता है।

weirdchars.txt  text

8
मैं खिड़कियों का उपयोग नहीं कर रहा हूँ।
सैम इलियट

1
गैर-विंडोज सिस्टम पर डिफ़ॉल्ट रूप से, core.autocrlf गलत पर सेट है। यदि आप लाइन-एंडिंग के कारण होते हैं तो आपको भी इस समस्या का अनुभव नहीं करना चाहिए। क्या आप अपने विशिष्ट सेटअप पर अधिक विवरण दे सकते हैं जैसे git diffकि उन फ़ाइलों के लिए क्या दिखाता है जो git statusकहते हैं कि संशोधित हैं, यह भी कि आप किस फाइल सिस्टम का उपयोग कर रहे हैं?
एरोमास्टर

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

यह हमारे लिए काम किया ( git config core.autocrlf falseपर्याप्त था)। हमें इस तथ्य से मूर्ख बनाया गया था कि क्लाइंट लिनक्स (एसएल / आरएचईएल) पर चल रहा है, लेकिन लिनक्स सत्र विंडोज होस्ट से x2go के माध्यम से शुरू किया गया है। तो यह अच्छी तरह से एक विन + लिन सजातीय संदर्भ में सबसे अधिक संभावना समाधान हो सकता है।
डिर्क

37

कृपया निम्न कमांड चलाएं। यह समस्या हल हो सकती है।

# Remove everything from the index.
git rm --cached -r .

# Write both the index and working directory from git's database.
git reset --hard

अन्य समाधानों में से किसी ने भी मेरे लिए काम नहीं किया, लेकिन इसने मुझे पीछे छोड़ दिया और चल दिया।
रेनबा

1
मैंने यह कोशिश की और यह मेरे लिए काम कर गया। धन्यवाद श्री लामा!
डेनियल लिटिल

इससे मेरा भंडार खराब हो जाता है। जिस शाखा में कोई बदलाव नहीं हुआ था, उसे चलाने के बाद मेरे पास 277 थे। मेरे पास उन अन्य शाखाओं पर समान परिवर्तन थे जिन्हें मैंने स्विच किया था। सावधानी से चलाएं। मैं सिर्फ रेपो द्वारा रिकॉल किया गया और 615 फाइलें संशोधित हैं। :(
प्रोग्रामर पॉल

इसने मेरे लिए git v2.7.4 का उपयोग ubuntu (WSL), Git for Windows v2.18.0.windows.1 और पॉश-गिट के साथ किया है। मेरे पास हमेशा आटोक्रॉफ़ल झूठे रहे हैं और Git में Windows और पॉश-गिट के लिए उन्नयन के बाद समस्या शुरू हुई। २.१ 2..० आज
जिम

मैं इस काम से अचंभित हूं। सहायता के लिए धन्यवाद। इस रास्ते से नीचे जाने वाले अन्य लोगों के लिए, जो फाइलें उचित रूप से संशोधित थीं, वे सभी .png और .bmp फाइलें git LFS द्वारा प्रबंधित की गईं
David Casper

16

Visual Studio में, यदि आप Git का उपयोग कर रहे हैं, तो आप .itignore और .gitattributes फ़ाइलों को ऑटो कर सकते हैं। ऑटो उत्पन्न .getattributes फ़ाइल में निम्न पंक्ति है:

* text=auto

यह लाइन फ़ाइल के शीर्ष के पास है। हमें बस इसके सामने एक # जोड़कर लाइन को टिप्पणी करने की आवश्यकता थी। ऐसा करने के बाद, चीजें अपेक्षित रूप से संचालित होती हैं।


1
धन्यवाद, आगाओं के लिए इसके साथ संघर्ष कर रहा था
एंड्रयू बेरी

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

12

समस्या अलग-अलग फ़ाइल अनुमतियों से भी उत्पन्न हो सकती है , जैसा कि मेरा मामला था:

ताजा क्लोन रिपोजिटरी (विंडोज, सिगविन):

$ git ls-tree HEAD
100755 blob 8099ea496a2c78d71125d79a05855f60ebf07904    testfile
   ↑↑↑

नंगे रिमोट रिपॉजिटरी (लिनक्स):

$ git ls-tree HEAD
100644 blob 8099ea496a2c78d71125d79a05855f60ebf07904    testfile
   ↑↑↑

5

मैं "क्यों" ऐसा होने पर अधिक निर्देशित उत्तर जोड़ना चाहता था, क्योंकि इसे ठीक करने के तरीके पर पहले से ही एक अच्छा जवाब है।

तो, .gitattributesएक * text=autoसेटिंग है, जो इस समस्या का कारण बनता है।

मेरे मामले में, GitHub की मास्टर शाखा की फाइलों का \r\nअंत था । मैंने रिपॉजिटरी पर सेटिंग्स को चेक-इन के साथ \nसमाप्त करने के लिए डायल किया है। मुझे नहीं पता कि Git क्या जाँच करता है। यह मेरे लिनक्स बॉक्स ( \n) पर देशी अंत के साथ बाहर की जाँच करने के लिए माना जाता है , लेकिन मुझे लगता है कि यह \r\nअंत के साथ फ़ाइल की जाँच की । गिट शिकायत करता है क्योंकि यह चेक आउट \r\nएंडिंग देखता है जो रिपॉजिटरी में थे और मुझे चेतावनी देते हैं कि यह \nसेटिंग्स में जांच करेगा । इसलिए फाइलें "संशोधित की जानी हैं"।

अभी के लिए मेरी समझ यही है।


3

मुझे भी यही समस्या थी। एक मैक के साथ भी। लिनक्स मशीन पर रिपॉजिटरी को देखते हुए मैंने देखा कि मेरे पास दो फाइलें थीं:

geoip.dat और GeoIP.dat

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


3

मेरे लिए वही मुद्दा। मैं एक ही नाम के साथ कई चित्र देख सकता था, जैसे "textField.png" और दूरदराज के गिट रिपॉजिटरी में "textfield.png", लेकिन मेरे स्थानीय रिपॉजिटरी पर नहीं। मैं केवल "textField.png" देखने में सक्षम था, जिसका उपयोग परियोजना के कोड में नहीं किया गया था।

यह पता चला है कि मेरे अधिकांश सहकर्मी Ubuntu4 पर ext4 फाइल सिस्टम का उपयोग कर रहे हैं जबकि मैं मैक पर APFS का उपयोग कर रहा हूं।

सैम इलियट के उत्तर के लिए धन्यवाद , समाधान काफी सरल था। पहले मैंने Ubuntu पर एक सहयोगी से अपरकेस के साथ निरर्थक फ़ाइल संस्करणों को हटाने के लिए कहा, फिर कमिट करें और रिमोट पर पुश करें।

फिर मैंने निम्नलिखित भाग किया:

# Remove everything from the index.
git rm --cached -r .

# Write both the index and working directory from git's database.
git reset --hard

अंत में, हमने तय किया कि हर डेवलपर को अपना Git कॉन्फ़िगरेशन बदलना चाहिए ताकि इसे दोबारा न रोका जा सके:

# Local Git configuration
git config core.ignorecase = true

या

# Global Git configuration
git config --global core.ignorecase = true

बेहतर होगा अगर आप सिर्फ upvoted@ kds का जवाब दें !
एल्हरोनी

ऐसा लगता है कि कमांड-लाइन कमांड में समान चिह्न ( =) नहीं होना चाहिए क्योंकि यह ignorecase = =कॉन्फ़िगरेशन फ़ाइल में समाप्त हो जाएगा ।
दमयेत्रो

1

मुझे भी बस यही समस्या थी। मेरे मामले में मैंने रिपॉजिटरी को क्लोन किया और कुछ फाइलें तुरंत गायब थीं।

यह फ़ाइल के लिए पथ के कारण और फ़ाइल नाम Windows के लिए बहुत लंबा होने के कारण था। इसे हल करने के लिए, फ़ाइल के लिए पथ की लंबाई को कम करने के लिए हार्ड डिस्क ड्राइव रूट के करीब के रूप में रिपॉजिटरी को क्लोन करें। उदाहरण के लिए, C:\A\GitRepoइसके बजाय इसे क्लोन करें C:\Users Documents\yyy\Desktop\GitRepo


1

नामक फाइल को संपादित करें .git/config:

sudo gedit .git/config

या:

sudo vim .git/config

अंतर्वस्तु

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true

[remote "origin"]
    url = kharadepramod@bitbucket.org:DigitalPlumbing/unicorn-magento.git
    fetch = +refs/heads/*:refs/remotes/origin/*

[branch "master"]
    remote = origin
    merge = refs/heads/master

[branch "productapproval"]
    remote = origin
    merge = refs/heads/productapproval

बदले filemode=trueमें filemode = false


यह git config core.Filemode false
गिलर्मो प्रांडी

1

MacOS के नए संस्करणों के लिए यह OS की सुरक्षा सुविधा के कारण हो सकता है।

जिस रिपॉजिटरी में मैं काम कर रहा था, उसमें एक बाइनरी फाइल थी, जिसमें फाइल टाइप के रूप में * .app था।

यह केवल कुछ क्रमबद्ध डेटा था, लेकिन macOS सभी * .app फ़ाइलों को एक अनुप्रयोग के रूप में मानता है और जैसा कि यह फ़ाइल उपयोगकर्ता द्वारा डाउनलोड नहीं किया गया था, सिस्टम ने इसे असुरक्षित समझा और com.apple.quarantineफ़ाइल विशेषता को जोड़ा, जो सुनिश्चित करता है कि फ़ाइल निष्पादित नहीं की जा सकती।

लेकिन फ़ाइल पर इस विशेषता को सेट करना भी फ़ाइल को बदल रहा था और इसलिए इसे किसी भी तरीके से बदलने के बिना Git परिवर्तन सेट में दिखाया गया था।

यदि आप एक ही समस्या को चलाकर देख सकते हैं $ xattr file.app

समाधान बहुत सरल है, जब तक आपको फ़ाइल के साथ काम नहीं करना है। बस *.app binaryअपने को जोड़ो .gitattributes


0

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


0

मैंने पाया कि Git मेरी फ़ाइलों (.psd को इस मामले में) को पाठ के रूप में मान रहा था। इसे .gitattributes में एक बाइनरी प्रकार पर सेट करने से इसे हल किया गया।

*.psd binary

0

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

git rm -rf the-folder-with-modified-stuff
git ci -m 'WAT'

बूम! स्वच्छ भंडार। समस्या सुलझ गयी। तब मुझे बस आखिरी प्रतिबद्ध छोड़ना पड़ा जब मैंने अपना किया rebase -iऔर आखिरकार फिर से सब कुछ साफ हो गया। विचित्र!


0

बस अगर यह किसी और की मदद करता है, तो इस समस्या का एक और कारण हो सकता है: गिट के अलग-अलग संस्करण। मैं एक Ubuntu 18.04 (बायोनिक बीवर) बॉक्स पर Git के डिफ़ॉल्ट इंस्टॉल किए गए संस्करण का उपयोग कर रहा था और सब कुछ ठीक काम कर रहा था, लेकिन जब Ubuntu 16.04 पर Git का उपयोग करके रिपॉजिटरी को क्लोन करने की कोशिश की गई, तो कुछ फाइलें संशोधित के रूप में दिखाई दे रही थीं।

यहां किसी भी अन्य उत्तर ने मेरी समस्या को ठीक नहीं किया, लेकिन दोनों प्रणालियों पर मिलान करने के लिए गिट के संस्करणों को अपग्रेड करना समस्या को ठीक कर दिया।


1
यह जानना उपयोगी (और दिलचस्प) होगा कि कौन से संस्करण एक साथ अच्छा नहीं खेल रहे हैं।
jpaugh
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.