2013-08-27 22 views
27

Karışık hat sonlarına sahip olan depomuzda. Mac OS X kullanıyorum ve git 1.8.3.1Aşağıdaki komut neden depomda tutarsız?

Bu depoyu yeniden düzenlerim, böylece her dosyanın .gitattributes dosyasına kabul eden satır sonları vardır. Bu amaçla

, ben son değişikliği kontrol ettikten:

git checkout origin/develop 
git reset --hard 
git rm -rf . 
git rm --cached -rf . 
rm .git/index 
git checkout HEAD .gitattributes 
git reset --hard 
git status 

Şimdi git rm --cached -rf . hataya neden olur, ancak yukarıda komutuyla çok paranoyak davranıyorum. (Makinemde, bu komutlar bir satırdaydı, çıkış kodlarını görmezden geliyordu)

Komutu birçok kez tekrarlıyorum. (Yani, YUKARI; ENTER; YUKARI; ENTER; YUKARI; ENTER; ...)

Çoğu zaman, temiz bir çıkışım var, beklediğim gibi değil. Ancak, her on defada bir kez, üç dosya aldığımı (doğru şekilde renormalize edilmiş gibi görünüyor) buluyorum. Kalan zamanlar, herhangi bir renormalizasyon değildir.

$ file source/RemoveDuplications.cs 
source/RemoveDuplications.cs: UTF-8 Unicode (with BOM) C++ program text, with CRLF line terminators 

My git dosya girişlerinin adil numarası vardır nitelikleri, ancak ilgili bir buradadır::

('modifiye' olduğu Ie) yeniden normalize edilmiş olur böyle bir dosyanın çıkışı

* text=auto 
*.cs text eol=crlf 

Burada yanlış olan ne olabilir?

+0

Değiştirildiğim gibi görünen dosyaların, şunu yaparsam değiştirilenlerle aynı olduğunu belirtmeliyim: 'find. -iname '* .cs' -exec unix2dos '{}' \; ' – Arafangion

+0

Açıkçası, git normalleşmesi her zaman olmaz ve kafam karıştı. – Arafangion

+0

Bu hata hala homebrew gelen git sürüm 1.8.4 ile oluşur. – Arafangion

cevap

-3

Dosyaları düzenlemek için her zaman bir sed komut dosyası gibi bir şey kullanabilir ve ardından bu durumun devam edip etmediğini görmek için bunları önerebilirsiniz. Bunu komut satırından yaparsanız, uygun düzenli ifadeyi kullanarak, sorununuza neden olabilecek gizli karakterleri çıkarmanız gerekir.

1

Yaptığınız şey aşırı karmaşık olabilir gibi görünüyor. Tüm dosyaları repodan kaldırmanız veya endeksi elle silmeniz gerekmemelidir. denedin:

git rm --cached -r . # remove everything from the index 
git reset --hard  # replace files w/ corrected line endings 
git add .    # stage all changes 
git commit -m "Normalize line endings" 

bu ben core.autocrlf ve .gitattributes senin değerlerini yeniden kontrol ederdim sizin için çalışmıyor. Bunları temizlemeniz, kabuğunuzu sıfırlamanız, repo'yu tekrar gözden geçirmeniz ve istediğiniz davranışı elde etmek için onları sıfırlamanız gerekebilir. İşte

yardımcı olabilir diğer bazı kaynaklar şunlardır: Birden cevapları ile

+0

Matt: Satır sonlarını depoda değil, sadece çalışma kopyasında düzeltmek istedim. – Arafangion