Klonlanmış depolarımdan biri, bunu bir git fsck'ten alıyor
ölümcül: gevşek nesne 40bda4e3b79c3d7bf598df31d9e68470f97a3f79 (.git/objects/40/bda4e3b79c3d7bf598df31d9e68470f97a3f79 içinde saklanır)
FSB'in temiz olduğu bir kopyasını daha aldım.
Ölümcül dizini içeren dizini/alt dizinleri kopyalamayı ve yeniden kopyalamayı denedim. Problem devam ediyor.
Herhangi bir dosyayı gerçekten umursamıyorum, sadece deponun temiz bir şekilde çalışmasını istiyorum. Ben ne yaparım?
Not: Uzak havuz github'da barındırılmaktadır.
Kolay cevap: Eski depoyu uzaklaştırın ve boşaltın. Eski depoda saklamak istediğiniz şeyler varsa, bunları almanın yolları vardır, ancak önce iyi bir repo elde edin.
İlk olarak, dosya sisteminde hata olup olmadığını kontrol edebilirsiniz:
fsck -y
Ardından git deposunu kontrol edin:
git fsck
Fikir şudur:
.gitadresinde bulunan mevcut git kayıtlarınızı kaldırın ("proje A" ile gösterelim).
cdklonlayın ve son işleme geri döndürün.
cdve A projesinin durumunu görmek için
git statuskullanın. Daha önce hiç yolsuzluk olmamış gibi olmalı.
Kısacası, mevcut çalışma alanınızı ayırmak için bir kopya alın ve dosyaları değiştirerek yeni bir klonla birleştirin ve ardından değişikliklerinizi normal şekilde yapın.
İşte eylemde:
Öncelikle bir yolsuzluğum olduğunu görüyorum (bunun nedeni, sanal makinemi dün tamamen kapatılmaya zorladığım için: P):
✘ domicor @ ubuntu ~/dotfiles master ● git durumu Hatası: nesne dosyası .git/objects/cd/593f6db1d5050406e15b9c80d215fd48db39f4 boş Hata: nesne dosyası. (.git/nesne/cD/593f6db1d5050406e15b9c80d215fd48db39f4 saklanan) cisim cd593f6db1d5050406e15b9c80d215fd48db39f4 bozuk : 593f6db1d5050406e15b9c80d215fd48db39f4 [. .____] ölümcül boş
dotfiles klasörümün bir kopyasını alın ve şimdi
.git klasörünü kaldırın.
$ cd ~/dotfiles $ rm -rf .git
Ardından git deposunu yeniden oluşturun.
$ git init
Uzaktan kumanda ekle.
$ git remote add Kökeni [email protected]: domicor/dotfiles.git
Uzaktan kumandadan al.
$ git getir
Şimdi HEAD'i sıfırlayın.
$ git reset - Kaynak/master
Uzaktan kumandadan alındıktan hemen sonra, deponun durumunu kontrol etmek için bir
git status komutu verdim. Tüm dosyaların izlenmediğini görebilirsiniz. Prompt komut satırının ilk kısmı,
git init komutumdan
git reset komutuna kadar turuncu renktedir; bu, repo'umu başlattığımda, git dosyaları algıladı ve sıfırlama işleminden sonra tüm dosyaların HEAD durumuna geri yüklendiğini belirtir bu nedenle yeşil istemi.
Yukarı akış dalını ayarlayın:
$ git branch --set-upstream-to = Kaynak/ana yönetici
Şimdi dosyalarınızı
dotfiles klasöründeki dosyaları değiştirmek için manuel olarak veya komut satırından yedekleme klasörüne (benim için
dotfiles (copy)) kopyalayın. Durumu kontrol edin ve ekran görüntüsümdeki gibi değişiklikler olmalı:
Artık değişikliklerin doğru uygulanıp uygulanmadığını kontrol etmek için
git diff your-filename yapabilirsiniz ve bundan sonra dosya ekleyebilir ve taahhüt edebilirsiniz. \O/
Bunu anlamak için git VCS sadece değişikliklerinizi kaydeder. VCS bozulduğunda, dosyalarınız hala güvendedir. Hala bıraktıklarında hala oradalar. Böylece, dosyalarınızı yedeklersiniz ve git kayıtlarını başka bir yerden geri yüklersiniz ve git geri yükleme kopyasını mevcut dosya durumunuzla karşılaştırabilir ve bozulmadan önce olduğu gibi nelerin değiştiği hakkında fikir sahibi olabilir. Ve şerefe\o /
git checkout 'ı diğer şubeye yapın, değiştirilen dosyaların listesini alacaksınız, sadece onları işleyin ve şubeye itin. Eğer bunu yaparsanız, bir dahaki sefere
git status' nin çalışması gerektiğinde sorun çözülecek.
Bu sorunla karşılaştım ve bu basit numara hile çözüldü.
Bu sorunla "my-new-feature" dalı olan "my-project" adlı bir klasörde bulunduğunuzu varsayalım, repoyu "my-project-dummy" adlı yeni bir klasöre klonlayın ve "my-new-feature" için ödeme yapın
"My-project" klasöründeki ".git" klasörünü silin ve "my-project-dummy" klasöründen ".git" klasörünü "my-project" e kopyalayın