Dosyanın bağlantısı kaldırılamadı. Tekrar denemeli miyim?


571

Yerel git depomdaki dosyalardan birinde yanlış bir şeyler oluyor. Şube değiştirmeye çalıştığımda şöyle diyor:

Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)

Bu ne anlama geliyor?



[Git rebase'in dosya bağlantısı kaldırıldı hatası] olası bir kopyası var ( stackoverflow.com/questions/3698369/… )
Josh Lee

Verilen cevap sizin için çalıştı mı, süreç görüntüleyici çalışmıyorsa yeniden başlatın ve dosyayı kaldırabilirsiniz, ayrıca sizin için çalıştıysa da yanıtı kabul edebilirsiniz
dhaval

1
Ayrıca git işleminin bu dosyada yazma izinleri olduğunu kontrol edin.
boileau

Yanıtlar:


751

Bu, başka bir programın dosyayı kullandığı anlamına gelir; bu da, şubeleri değiştirmeye çalıştığınızda git'in dosyayı çalışma dizinine "taşımasını" engellemesini önler.

Eclipse programı "kullanarak" programı Windows Vista'da bu oldu. Dosya gerçekte tutulma içinde açılmamış olabilir, ancak tutulma tarafından çalıştırılan bir işlem tarafından açılmış olabilir.

Bu durumda, dosyayı kullanmış olabilecek uygulamalarda kapatmayı deneyin. Bu işe yaramazsa, dosyayı açmış olabilecek uygulamalardan tamamen çıkın.


53
Windows'ta, hangi işlemin dosyanın açık olduğunu bulmak için ProcessExplorer kullanın.
Dave C

2
"Bu dosya silinemiyorsa (örn. Dosya yoksa), sadece dosyayı atla" gibi bir komut dosyası yazmanın bir yolu var mı?
2xMax

14
Benim durumumda bu Visual Studio ve Git eklentisiydi.
Michał Powaga

8
Windows'ta, ProcessExplorer kullanılamıyorsa veya indirmek istemiyorsanız, (Windows + R) "resmon" komutunu çalıştırabilir, CPU sekmesine gidebilir ve "İlişkili Tanımlayıcılar" metin kutusunda dosya adını arayabilirsiniz.
Raphael

6
Eğer GitKrakenbir rebase gibi komutlar uygularsanız bunu alabilirsiniz
mtpultz

285

Bu sorunu vardı ve komut ile çözdüm: git gc Yukarıdaki komut temp ve gereksiz dosyaları kaldırın. (Çöp toplayıcı.)


43
git pullgit gcotomatik olarak başlatılır ve gc bazı .pack ve .inx dosyalarına erişmeye çalıştı. Bunlar git pullkomuta sahip olan "windows git" işlemi tarafından tutuldu . Koşu git gcelle ve daha - git pullgerçekten sorunu çözer.
Nikita

4
Koşu yaparken git gczaman tekrar aynı hata var gcsürüyor oldu
Prakash K

4
"Git gc'nin manuel olarak çalıştırılması ve than - git çekme sorunu gerçekten çözüyor." Bu yardımcı oldu. Teşekkürler Nikita.
sangam

Bu da bana yardımcı oldu. Bunu Git Bash ile Windows'ta koştu
Ascalonian

Git çekme işlemini başlattıktan sonra bu hatayı aldım. Çekimi durdurmak, git gc'yi çalıştırmak ve sonra git çekmeyi tekrar çalıştırmak için CTRL + C tuşlarına bastım, sorun kayboldu ve çekmeyi keserek hiçbir şey kırılmadı.
daniel sp

84

buradan bu çözüm benim için çalıştı:

Bu Windows'a özel bir cevaptır, bu yüzden bunun sizin için önemli 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.


2
Benim için çalıştı. Yönetici olarak VS'yi çalıştırdı ve daha sonra VS'den komut istemini başlattı
Sentinel

3
I: bağlantısız Ctrl+Cdosyaların çok uzun listesini sonlandırmak için yazdım ; gitbash, IDE'm ve GitHub Windows uygulamasından çıkıldı; gitbash yükseltilmiş "Yönetici Olarak Çalıştır" modunda yeniden başlatıldı; ve koştu git gc --aggressive. Tamamlamak için biraz zaman aldı, ancak hatasız tamamlandı.
Mark McClelland

Bunun bir kopya olduğunu düşünüyorsanız, başka bir yanıta işaret eden bir cevap eklemeyin
Liam

2
@Liam Bu soru daha eski ama bu cevap sadece diğer soruya aitti ve bu soruya sadece bir cevap yok, bu da sadece bir tane yinelenen olarak ayarlamayı zorlaştırıyor.
sepehr

Bu benim için gayet iyi çalıştı. Önceki cevaplardan hiçbiri olmadı. Çok teşekkürler.
Roberto Rodriguez

35

A yaparken bu sorunla karşılaştım git pull.

Denedim git gcve sorunumu çözdü.


Windows makinesinde bu sorunla karşılaştım ve bu çözüm başlangıçta işe yaramadı. Ancak bu komutu bir yönetici komut isteminden çalıştırdığımda sorunumu çözdü.
William W

23

Benim durumumda dosyaya veya dizine dokunan hiçbir işlem yok. Belki de bir işletim sistemi kısıtlaması (windows) nedeniyle yol çok uzunsa olur. Global git yapılandırmasında uzun yol destek bayrağını aşağıda belirtildiği gibi etkinleştirmeyi deneyin:

git config --global core.longpaths true

veya sizin için çelişkili değilse evet / hayır yanıt bayrağını ayarlamaya çalışın

set GIT_ASK_YESNO=false

Yol çok uzunsa, başarılı bir çözüm bulamadım.


5
Neden bilmiyorum ama "git config --global core.longpaths true" ayarı benim için yararlı oldu.
Maxim

GIT_ASK_YESNO, bununla ilgili bilgi bulamıyorum. Nereden geliyor ?
majkinetor

bkz. stackoverflow.com/questions/3698369/… örneğin; Şimdi git (2.9) 'in son sürümleriyle çalışıyorsa yapmıyorum
andhdo

core.longpathsek olarak: sıfırlama --hard prune gc benim için çalıştı - ama araçlarında
yapısını bozmamak


10

Bu birisi için yararlı olabilir; yukarıdakilerin tümü sizin için işe yaramadıysa, aşağıdaki adımları izleyin:

  1. IDE'nizi (benimki Eclipse'ti, Intellij ve diğerleri için geçerli olup olmadığından emin değilim) veya git kullanıyor olabilecek başka bir uygulamayı kapatın.

  2. Git komut satırından açın (benim durumumda git bash vardı) ve git gcbaşkaları tarafından belirtildiği gibi çalıştırın .

Bu benim için sihir yaptı.


Android Studio'yu kullanarak
durumuma

10

Gitkraken ve komut istemini kullandığım için, aynı sorunla karşılaştım. Ve sonra git gckomutumu çalıştır, sorunumu çözdü. Bu yüzden mutluyum ve yardımcı olabilecek bazı noktaları paylaşmak istiyorum.

Ne git gcyapacaksın?

git gc git add'in önceki çağrılarından yaratılmış olabilecek erişilemeyen nesnelerin kaldırılması.

Ne zaman kaçmalı git gc?

Gönderen doc , kullanıcılar iyi disk alanı kullanımını ve iyi çalışma performansı korumak için her depo içinde düzenli olarak bu görevi çalıştırmak için teşvik edilir.

Otomatik yapılandırılabilir nasıl yapılır?

Bazı git komutları git gc'yi otomatik olarak çalıştırabilir; ayrıntılar için aşağıdaki --auto bayrağına bakın. Ne yaptığınızı biliyorsanız ve tek yapmanız gereken bu davranışı daha fazla düşünmeden kalıcı olarak devre dışı bırakmaktır.

git config --global gc.auto 0

8

Benim durumumda (Win8.1, TortoiseGit çalışıyor), dosyayı kilitleyen "TortoiseSVN durum önbelleği" adı verilen işlemdi.

Öldürmek artık "git gc" yi çalıştırmamı sağladı. Yukarıdaki işlem TortoiseGit tarafından başlatılır, bu nedenle manuel olarak yeniden başlatılmasına gerek yoktur.


7

Windows 7'de bu tür bir sorun yaşadım ve bazı yetim git.exeişlemlerden kaynaklandığı ortaya çıktı .

Çözmek için Görev Yöneticisi'ni açın ve tüm git.exeişlemleri öldürün .

Yana gitkomutlar kısa ömürlü olan, normalde hiç görmem gerektiğini git.exeGörev Yöneticisi. Orada olduklarında, genellikle bir şeylerin yanlış olduğu anlamına gelir ve bu süreçleri öldürmelisiniz.


7

Bu sorunu Windows'ta aldım. IDE'mi (Android Studio) kapattım ve git kabuğunda EVET'i seçtim. İşe yaradı.


5

Windows 8'de git gc'yi çalıştırdım ve git gc'nin zaten çalıştığını, git gc --force'ı ve çöp toplayıcısını çalıştırdığını söyledi.

Daha sonra dalları değiştirebilir ve herhangi bir sorun olmadan birleşebilirim, git gc --force'u deneyin.

Belki de gc süreci bir nedenden ötürü zarifçe durmadı.


Windows 10 için de geçerlidir
oguzhan

4

Klasördeki .tmpdosyalarla bu sorunu yaşadım /.git/objects/pack. Bir itme veya çekme sırasında bir şeylerin başarısız olduğunu düşünüyorum, bu yüzden bu geçici dosyaları kaldırdım ve HEAD'i son işime sıfırladım. Bu tavsiye edilirse emin değilim ama benim için çalıştı. Ayrıca git count-objects -vbana .tmppack klasörüne ait olmayan dosyaların bir listesini verdi .

Veya pencerelerde y / n mesajlarını bastırıp git open cmd.exeçalıştırmak için:

SETX GIT_ASK_YESNO false

burada görüldü: https://twitter.com/petercamfield/status/494805475733807104


Run ettikten sonra git gc, git count-objects -viçinde geçici nesneler artık belirlenmesinde yardımcı olur packklasörde.
mistaecko

4

Powershell'i Yönetici olarak açarak ve oradan çözmeyi başardım.git checkout <branch_name>


Teşekkürler bar-horing. Bu, onu bir izin sorunu olarak tanımlamama yardımcı oldu. Bir kez o klasör için windows izni düzeltti çalıştı.
Kumar

3

'Git pull' yaparken de aynı sorunla karşılaştım. Manuel temizlik git komutu 'git gc' denedim ve sorunumu çözdü.


4
Bu ise bir yanıtlamak için yapılan bir girişim, zaten (gibi diğer cevaplar kapsamında değildir hiçbir şey katmıyor bu bir ). Bu çözümün işe yaradığını doğrulamaya çalışıyorsanız veya bu cevabın yazarına teşekkür etmek istiyorsanız, lütfen cevap vermeyin. Biraz daha kazanmak sonra ünü , yeterli kazanacaktır ayrıcalıkları için upvote teşekkür söylemenin yığın taşması yoludur sizin gibi cevaplar.
Scott Weldon


2

Çeşitli çözümler denedikten sonra nihayet git clean -fbana yardımcı oldu.

DÜZENLEME: Soruna birkaç kez daha vurdum - git'e bağlı tüm işlemleri kapatmak yardımcı gibi görünüyor (gitbash, Eclipse IDE gibi)


2

Yukarıda belirtildiği gibi, dosyaları tutan başka bir şey var. Şey bu program bizim için şüpheli görünmüyor. GitKraken açıldığında konsoldan bir git çekme yapmaya çalışıyordum. GitKraken'in kapatılması sorunu çözdü.


2

Çalıştır komutundan sonra

git rm -rf foo.bar

Hata görüyorum

Unlink of file 'foo.bar' failed. Should I try again? (y/n)

Çünkü başka bir program bu dosyayı kullanıyor . Örneğin, Java web uygulamasını hata ayıklama modelinde çalıştırdığımda veya web uygulamasını sunucuda çalıştırdığımda günlük dosyasını silemiyorum. Uygulama sunucusunu kapatın (veya hata ayıklama işlemini kapatın), tekrar deneyin

git rm -rf foo.bar

Dosyanın silindiğini görüyorum.


1

Bu, bazı git geçmişini görmek için çalışan ayrı bir gitk penceresi olabilir.

Sorunu çözmek için pencereyi kapatmanız yeterlidir.


1

Git Bash ve Eclipse EGit'i aynı anda çalıştıran bu sorunla karşılaştım. Çözüm: Eclipse'i kapatın. Ayrıca git gc@khilo belirtildiği gibi çalıştırmak zarar vermez.



1

Windows'ta bu sorunla karşılaştım, git bash'ı bir yönetici olarak çalıştırmak ve daha sonra sorunu benim için çözen arzu komutlarını gerçekleştirmek isteyebilirsiniz.


1

Bir web uygulaması geliştiriyorsanız, yaygın bir neden sunucuyu kapatmayı unutmaktır. Örneğin, bu basit bir Node.js işlemi olabilir veya Windows üzerinde IIS işleminizin arka plan işlemi olarak daha mütevazi çalıştığı olabilir.


1

Bu sayfadaki her ipucunu denedim ve hiçbir şey yardımcı olmadı. Bir git fetchve bir yapıyordum git reset --hard origin/developmentbana unkink hatasını verdi. Son işleme sıfırlanamadım.

İşe yarayan başka bir dalı kontrol etmek ve ardından bir önceki dalı kontrol etmekti. Çok garip ama sorunu çözdü.


1

IDE'nizi kapatmak ve burada listelenen çeşitli git komutlarını çalıştırmak yardımcı olmazsa, çalışan tüm Java işlemlerini manuel olarak öldürmeyi deneyin. Muhtemelen bir şekilde bir yapılandırma dosyasını açık tutulması tutulması kalan bir Java işlemi vardı.


1

Docker kullanıyorsanız ve Windows 10 kullanıyorsanız, dosyanın çalıştığı kapsayıcıları durdurmak isteyebilirsiniz. Kapsayıcılarınızın durumlarını göstermek için çalıştırın

docker ps -a

Onları durdurmak için koş

docker stop <container name or container id>

Yerel dosyalarımı bir .sh dosyası kullanarak çalıştırdığımda bu benim için çalıştı


1

Benim için çalıştı, Windows üzerinde çalıştı:

Sunucunuzun IDE'den çalışmasını durdurun veya IDE'nizi kapatın

Intellij / Ecllipse ya da herhangi biri, işe yarayacak.


0

Windows'ta bu hatayı git clone(oldukça büyük) bir depoda gördüm . Kapalı SmartGit ve benim yedek yazılımı (CrashPlan) durdurulmuş ve bundan sonra işe yaradı. Hangi 2 hile yaptı emin değilim, ama ya da çalışan, bu da sizin için yapabilir.


0

Bir git çekme yaparken aynı sorunu vardı ve yukarıda belirtildiği gibi, bu dosyaları tutan ve git çekme izin vermedi bir program nedeniyle oldu. Programı kapatmak yardımcı oldu. Genellikle, dosyaların teslim edildiği IDE (Eclipse gibi) arka planda tutar. Aynı kapatma ve git pull yeniden çalışan benim için sorunu çözdü.


0

Aynı hatayı aldım ve dosyayı açmış olan uygulamayı kapatarak çözdüm. Geri dönüp "Y" ye basmayı başardı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.