Dosyanın bağlantısı kaldırılamadı


169

Git çekme yapmaya çalışıyorum ve aşağıdaki hatayı alıyorum:

'Lib / xxx.jar' dosyasının bağlantısı kaldırılamadı. Tekrar denemeli miyim? (E / H)

Y veya n'yi seçersek seçerim, çekebileceğim veya itebileceğim bir duruma gelmek mümkün değildir.


Bu dosyaya yazma haklarına sahip olup olmadığınızı kontrol ettiniz mi?
Raphael Michel

1
sağdaki dosyayı chmodve / veya chownsöz konusu dosyayı çalıştırın.
Not_a_Golfer

Haklara sahip olmalıyım, yoksa onu seçeceğim / chmod!
marko


Yanıtlar:


204

Bu genellikle bir işlemin hala belirli bir dosyayı kullandığı anlamına gelir (üzerinde hala bir tutamaç vardır)
(Windows'ta ProcessExplorerbu tür bir işlemi izlemekte iyidir)

Diğer programlarınızı kapatmayı ve tekrar programınızı deneyin git pull.

GIT_ASK_YESNODeğişkenle ilgili bir alternatifiniz olduğunu unutmayın .


Ocak 2019 Güncellemesi:

Git 2.21 (1. Çeyrek 2019) ile bu daha da düzeltilmelidir, çünkü " git gc" ve " git repack", kaldırılmadan önce gereksiz buldukları açık paket dosyalarını kapatmadı, bu da açık bir dosyayı kaldıramayacak bir platformda çalışmadı.
Bu düzeltildi.

Bkz . Johannes Schindelin ( ) tarafından 5bdece0 (15 Aralık 2018 ) . (Göre Birleştirilmiş - Junio Cı Hamano - içinde 5104f8f tamamlama 2019 Ocak 18)dscho
gitster

gc/ repack: gerektiğinde paketleri serbest bırak

Windows'da, hala bir işlem tarafından tutulan tutamaçlar varsa dosyalar kaldırılamaz veya yeniden adlandırılamaz.
Bunu düzeltmek için close_all_packs()işlevi tanıttık .

Daha önce, artık gerekli olmayan paketleri kaldırmak git gcistemesi durumunda , paketlerin daha önce serbest bırakıldığından emin olduk gc.

Ancak bu geliştirici gc, paketlerin bırakılmasına ihtiyaç duyduğunu da unuttu; örneğin, --aggressiveseçenek aracılığıyla tüm paketleri birleştirirken .

Benzer şekilde, git repack -deski paketleri silmek istiyor ve bu nedenle de tüm paket tutamaçlarını da kapatması gerekiyor.


Güncelleme Ocak 2016

Bu, Git 2.8'de (Mart 2016) düzeltilmelidir (ve aşağıdaki Git 2.19, Q3 2018'e bakın)

Bkz. Taahhüt d562102 , taahhüt dcacb1b , taahhüt df617b5 , taahhüt 0898c96 (13 Ocak 2016), Johannes Schindelin ( dscho) .
(Göre Birleştirilmiş - Junio Cı Hamano gitster- içinde 3c80940 tamamlama 2016, 26 Ara)

fetch: çöp toplamadan önce paket dosyalarını serbest bırakma

Otomatik gc'ing işleminden önce, yeniden paketlenmeleri ve çöp toplanmaları gerektiğinde paket dosyalarının serbest bırakıldığından emin olmamız gerekir.

gc --autoTutulan paket dosyalarından çıkmadan önce " " çalıştıran kod kodlarının çoğu eşlenmiş ve dosya tanımlayıcılarını açık bırakmış, bu da açık dosyaları kaldıramayan sistemlere uygun değildi.
Şimdi bunu yapmadan önce paketleri kapatıyorlar.

Bu git-for-widows500 sayısını düzeltir .

Bu yeni yaklaşımı doğrulamak için kullanılan teste bakıldığında, (Git 2.8 henüz çıkmadığı için) olası bir çözüm yapay olarak ortaya çıkacaktı gc.autoPackLimit.

git config gc.autoPackLimit 10000
git fetch
git config gc.autoPackLimit 50 # default value

git 2.8.4 (Haziran 2016) , aynı zamanda sorunu hafifletmesi gereken 755 numaralı sorundan bahsetmektedir ( taahhüt 2db0641 ):

Geçici dosya tanıtıcılarının alt işlemler tarafından miras alınmadığından emin olun


Aslında, yukarıda bahsedilen git-for-windows500 numaralı sorun Git 2.19, Q3 2018 ile gerçekten düzeltildi.
Bkz. " Git - Dosyanın bağlantısı kaldırıldı .idxve .packbaşarısız oldu (Bu dosyaya ait tek işlem tutamacı git.exe) "


5
Büyük olasılıkla bu jar dosyasını kullanarak çalışan bir JVM vardır.
Thorbjørn Ravn Andersen

2
Benim durumumda Skype'tı. Daha önce dosyayı başkalarına aktarmıştım ve bazıları henüz kabul etmedi veya iptal etmedi.
Vivek Kodira

6
Windows Gezgini'nin suçlu olduğunu gördüm. Büyük olasılıkla TortoiseGit'in simge bindirmeleri veya TGitCache nedeniyle oldu. Tüm açık klasörleri kapatmak işe yaradı, ancak proje klasörünü yalnızca açıksa kapatmanız gerekebilir.
Allan Bogh

4
Benim durumumda, açık çözeltiye bağlı olduğu için VS2013 idi.
BrotherOdin

2
Explorer.exe benim sorunumdu - TortoiseGit'im yok. Görev Yöneticisi'nden explorer.exe'yi öldürdüm ve CTRL-ALT-DELETE => Görev Yöneticisi => Dosya => Yeni Görev Çalıştır => "explorer.exe" (tırnak işaretleri olmadan) kullanarak yeni bir tane oluşturdum
joehanna

57

Bu Windows'a özel bir cevaptır, bu yüzden bunun sizin için uygun olmadığını biliyorum ... Sadece gelecekteki arama yapanların yararına ekliyorum.

Benim durumumda, Git'i yükseltilmemiş bir komut satırından çalıştırıyordum. "Yönetici olarak çalıştır" benim için düzeltti.


4
Çekme yaparken Windows 7'de bu sorunu vurdum ve git otomatik paket yaptı. "İdx" dosyalarından şikayetçi. Daha sonra yönetici olarak bir konsol penceresi açtım ve git gc'yi çalıştırdım ve sorun olmadı. Yani bu iyi bir çözüm.
grahamesd

1
git gc Windows 7'de benim için yaptı. b / c WebStorm bir itme yaparken cmder üzerinde bir git çekme yapıyordu
Alessandro

2
Vay. Teşekkürler NeilD. Benim için de düzeltti. GIT'i Windows'a biraz daha taşımak güzel olurdu.
Martin Dobšík

Şey ... 6 yıl önce gerekliydi. Şimdi? Kim bilir? ¯_ (ツ) _ / ¯
NeilD

30

Benim için, Visual Studio tüm değiştirilen dosyaları çekmeden yeniden yüklemeye çalışıyordu. Visual studio yenileyin, sonra çalıştırın git gc.


3
Benim için benzer. Git gc çalıştırmadan önce tutulmanın kapatılması gerekiyordu.
alfoks

5

Windows için GitHub kullanan Windows'ta, çalışırken kabukta benzer bir hata aldım git gc:

Unlink of file '.git/objects/pack/pack-0b40ae7eae9b83edac62e19c07ff7b4c175244f6.idx' failed. Should I try again? (y/n)

GitHub GUI'sini kapatarak çözdüm.


2

Bazı dosyalarınızı kilitlemiş olabileceği için Apache'yi veya başka bir web sunucusunu yeniden başlatmayı deneyin.


2

Visual Studio ve Rubymine kapatıldı ve tekrar hata alamadım. Bunlardan biri suçluydu.



1

Ben de bu sorunu var, ama benim tutulması çalışma alanımı düzenlemek ve düzenlemek için UE kullandığım için, bu şekilde UltraEdit olduğunu öğrendim ~~

Belki de UE'nin belirli dosyanın eski sürümünde bir tanıtıcısı olduğundan, Git'in bağlantısı kaldırılamadı.

UltraEdit'i kapattıktan sonra sorun bir daha olmadı.



0

Sorun, bu dosyaları işleyen bir programa sahip olmanızdır. Unlocker kullanacak programı bulmak için kullanmanız gerektiğini bir öneri var:

Unlocker


0

Bu, Windows XP'de, hem bir döngüde sıkışmış mesajla hem de yanıt vererek silinebilmemle oldu.

Döngü içinde sıkışmış durum Git-GUI kapatılarak temizlendi. (Bir bash kabuğunda git merge -i'yi çalıştırıyordum.)

Diğer olaylar büyük olasılıkla depomdaki çok sayıda dosya nedeniyle oldu. Daha sonra sürüm kontrolünden hariç tutacağım .cod dosyaları ile oldu. (Onları intial olarak izlemek için bir nedenim var.) Nedenin Git'in dosya tanıtıcılarını kullanma hızı ile ilgili olabileceğine inanıyorum.

Önceki iki posterin Windows'tan bahsettiği gibi, yanıtlayabilen ve giderilebilecek sorunun Windows ile ilgili olup olmadığını merak ediyorum ve kimse diğer işletim sistemlerinde sorun yaşadıklarını söylemedi.


0

PHPStorm'u açtım, kapattım ve her şey yolundaydı.


0

Aynı sorunu yaşadım ve ilgili tüm programları Window Task Manager'dan kapattım. Ancak, hala çalışmıyordu. İlginç olan, "Git pull" yerine "Git rebase" i çalıştırdım ve işe yaradı!


0

Yukarıdaki cevapların hiçbiri benim için çalışmıyor, ama git gc komutunu kuvvet seçeneği ile çalıştırıyorum ve durumumu çözdü.

'git gc --force'

[Windows 7, Yönetici Olarak Çalıştır => Komut İstemi]


0

Komut satırı düzenleyicisini yönetim kipinde çalıştırmayı deneyin ve komutu çalıştırın. Soruna yardımcı olur ve çözer. :)


0

Benim durumumda soruna neden olan eski bir budama etiketleri yöntemi vardı. Orijinali ayarlayarak çözdüm:

git config --global --unset remote.origin.fetch '\+refs/tags/\*:refs/tags/\*'

daha sonra sunucudaki silinmiş dalları budamak için ekleyin:

git config --global fetch.pruneTags true

0

Aynı hatayla karşılaştım ve tutulmayı kapatıp dosya kullanılırken tekrar çekerek çözdüm.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.