Git,

2013-04-11 28 views
12

değiştirildiğini düşündüğü bir dosyayı geri döndürmeyecek veya işlemeyecek bir SVN deposu, this tutorial izleyerek Git'e dönüştürdüm. Ve şimdi this answer'da önerildiği gibi bir alt depoyu çıkaramıyor gibi görünüyor.Git,

Uzun postayı affet, ancak metnin çoğu güzel biçimlendirilmiş git çıktısıdır.

OS: Windows 8 Komut satırı: MinGW Git sürüm: 1.8.1.msysgit.1

bir subrepository ayıklanması temiz bir evreleme alanı ve hiçbir değişiklik olmadığı sürece işe görünmüyor süreci Dosyalar. Bu yeni bir SVN içe aktarma olmasına rağmen değiştirilmiş bir dosyamın olduğunu söyler.

git status Tamam, sadece denemeye çalışalım.

Dosyayı yeniden deneyin ve geri alın.

user$ git status 
# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  modified: folder with space/folder/toolbar.png 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

user$ git checkout -- "folder with space/folder/toolbar.png" 

user$ git status 
# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  modified: folder with space/folder/toolbar.png 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

Bu işe yaramadı, ancak bunu yapmam umurumda değil, bundan sonra bunu deneyeceğim.

user$ git commit -a -m "Testing if committing fixes it" 
# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  modified: folder with space/folder/toolbar.png 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

user$ git status 
# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  modified: folder with space/folder/toolbar.png 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

Sığdırmayı atlama işlemine izin vermek işe yaramıyor, bu yüzden ilk önce deneme yapalım.

user$ git add "folder with space/folder/toolbar.png" 

user$ git status 
# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  modified: folder with space/folder/toolbar.png 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

Çalışmıyor, bu yüzden işe yaramadım ... Git ve birisine daha akıllıca sor.

Git yeni ama Hg'yi tanıyorum ve kendim başlamak için this online tutorial'u okudum.

Basit bir komutla uğraşmak tamamen mümkündür.

Zaten denedim: Benim özel sorunum için etrafa baktım ama biraz şansım oldu. this answer'a rastladım, bu da alakalı görünüyor ama sorunumu düzeltmiyor.

Düzenleme: İlginç olabilecek şeyler Bu, kafamın karıştığı bölümdür. Bu repoyu bir süre önce online bir depoya ittim. Yeni bir klondan sonra repo hala dosyanın değiştirildiğini düşünür (yani git status aynı sonucu döndürür ve zaten git config --global core.autocrlf false'u ayarlamıştım ve gerçekten yanlış döndüren git config --global core.autocrlf'u çalıştırarak doğruladım).

Düzenleme 2: bulunan Fix, ancak sorun hala Sadece sistemin, aşama alanından dosyayı kaldırıp sonra değişiklikleri işlemekle repository'sinde düzeltmek başardınız anlaşılamamıştır. Bundan sonra dosyayı geri almak için kopyaladım ve depoya verdim.

Sorun, sabit olsa da beni daha fazla karıştırdı.

Dosyayı kaldırırken etrafta dolaşırken, deponun son işi dosyayı kaldırdığı HEAD'e sıfırladığımda, git durumunun hiçbir şeyin değişmediğini ve dosyanın izlendiğini, ancak dosyanın izlendiğini göstermediğini fark ettim. dosya benim çalışan ağaçgeri yüklenir. Bu git kaldırılmış olarak işaretlenmiş göz önüne alındığında garip ...

Artık yalnızca ikinci kez kaldırdıktan sonra, artık onu hatırlamıyor olsa bile, gerçekten kaldırmayı başardım, böylece git reset ve git reset --hard dosyaları geri yüklemez.

birileri bu duruma var ve Git veya normal davranış bir hata olup olmadığını çok iyi olur nasıl açıklayınız Eğer

.

Benim suspitions Ben kullanılan ancak ne oldu böyle bir şey gitti komutların sırasını kaybettim: dosya Images/toolbar.png olduğunu ve Images klasöre gittikten ettik.

# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  deleted: toolbar.png 
#  deleted: ../images/toolbar.png 
# 

Not images klasör harfle olmadığı bir gerçek: Ben dosya sistemi git den silmiştir sonra

şöyle değişiklik saptadı! Bu, yol durumunda yok sayan Windows'da çalıştırılıyor. Bu sorunun bir parçası ...

Gerçekten kafam karıştı ama benim sorun bitti olabileceğini sanıyorum. Yani bu yazı bir merak olarak kalıyor, ancak bir yerde SVN'den dönüşümde yaşadığı davranışları kopyalayamıyorum.

+0

Dosya dosyanızın düzgün bir şekilde işlenmemesi gibi görünüyor. Klasör adlarınızdaki boşlukları denemek ve kaldırmak ve bunun düzeltip düzeltilmediğini görmek mümkün mü? – Devin

+0

Mümkün evet, basit hayır ... Denerim. – nonsensickle

+0

Şu anda, temiz bir depo çekmeye çalışıyorum ama bunun işe yaramayacağından şüpheleniyorum. Bunu yapıldıktan sonra alanı kaldırmayı deneyeceğim ama depo küçük değil. Ayrıca, neden yollarda boşluklarla sorun var? – nonsensickle

cevap

9

Bir süre önce benzer bir sorun yaşadım.

Bu dosyadaki büyük harfler mi yoksa herhangi bir noktada değiştirilmişler mi?

Tüm küçük harf olarak değiştirilen bir büyük harf içeren bir dizin vardı (diyelim ki /Foo - /foo). Bana anlattığın tüm sorunları verdi. Bir dosyayı modifiye zaman

, bu bana benzer çıktı verdi: işlemekten veya herhangi bir sonuç üreten değildi sıfırlamayı nerede

#  modified: bar.txt 
#  modified: ../Foo/bar.txt 

Ben de aynı problem vardı.

Ben sorunun nedeni Windows dosya yolları harfe duyarlı olmadığını düşünüyorum, ama Unix olanlardır. Git gibi bir çok komut satırı aracı Unix-y sistemlerinde geliştirildiğinden, bazen bu farkı iyi işlemezler ve bir dosya Foo/bar.txt ve foo/bar.txt olarak eklendiğinde kafaları karışabilirler. Sanırım bu, Git'in iki farklı dosya olduğunu düşündüğünü, aslında sadece bir tane var.

Benim nihai düzeltme yeniden ekleyerek bunu (ve daha asla harf değiştirerek) daha sonra, geçmişinden dizinin tamamını kaldırmak, sizinkiyle aynı oldu. Bu aynı zamanda, çekmeden önce iki kez çıkarmak zorunda olduğum yeri tarif ettiğin aynı tuhaflığa neden oldu.

Neyse, bu kesin bir cevap değil biliyorum ama sorunu yeniden mümkün beri ettik, bu yüzden o (en azından benim için) neyin neden olduğunu eminim.

+0

Tam olarak deneyimlediğim şey bu. Nerede olduğuna emin değilim ama eminim SHA1 sağlama toplamı ile aynı dosya olduğunu ancak dizinin farklı olduğu için kafamın karıştığından eminim ... Her iki durumda da, seninki, yakın olan tek cevabın ne yaptım. Yanıt olarak kabul etmekten mutluluk duyarım, özellikle de yeniden üretebilirseniz. – nonsensickle

3

Bilgisayarımın görüntülediği aynı ada sahip iki dosyaya sahip olmama nedeniyle benzer bir sorun yaşadım.

İleti ben alıyorum tuttu: Repo başlangıçtaki harf duyarlı biçimlendirilir ve hata harf duyarsız biçimlendirilmiş benim iMac görünürken yapıldıysa MacBook yapıldığını kesinleştirme çünkü

# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: images/contact_seller.GIF 
# 

sırada gerçekleşti.

harfe duyarlı makinede

sen git bu konuda bir şeyler yapmak zorunda ikinci makinede geçerli değil iki dosya

SwedishChef$ ls images/contact_seller* 
images/contact_seller.GIF images/contact_seller.gif 

görebiliyordu.

Sadece dosyayı yeniden adlandırıp bu değişiklikleri yapmam gerekiyordu.