git rebase: “hata: 'dosya' statüsü verilemiyor: İzin reddedildi”


343

Git'i kullanıyorum ve küçük bir işlem yaptıktan sonra büyük bir işlem gerçekleştirdim. Ben git rebaseitmeden önce iki komisyon birlikte ezmek için kullanmaya karar verdim . (Bunu daha önce hiç yapmadım.)

Ben de yaptım:

git rebase -i HEAD~2

Bu bana editörümü verdi, burada önceki taahhüdü seçip daha sonunu seçtim. Kaydettiğimde git dedi:

hata: ' dosyaadı ' statüsü verilemiyor: İzin reddedildi

Daha sonra işlemek için sha1 uygulanamadı ... bu işlem için metnin ilk satırı

Şimdi:

  • Yaptığım zaman hiçbir taahhüt görünmüyor git log.
  • git status "Şu anda herhangi bir şubede değilim" dedi.
  • Bir dosya değiştirilmiş ve dizinde listelenir ve iki dosya izlenmemiş olarak listelenir. İlk işlemimin sadece bir dosyası vardı (sanırım) ve ikinci işlemimin iyi bir düzine vardı.

Ne oldu!? Nasıl düzeltebilirim?


10
Şans eseri, pencerelerde git kullanıyor musunuz?
CB Bailey

Evet. Komutları bir DOS penceresinde çalıştırıyorum.
Ryan Lundy

2
Bir virüs denetleyicisi mi kullanıyorsunuz? Bazen düşük kaliteli virüs denetleyicisi programları böyle sorunlara neden olur.
Greg Hewgill

53
Git ödeme ile sorun vardı (bu yüzden kabul edilen cevap tarafından önerilen hiçbir iptal mümkün) ama tüm IDE'leri kapatmak bana izin. İkinci cevap kabul edilen cevap olmalı
artı

1
@IanGrainger, bahsettiğiniz cevap kabul edilen cevaptan sekiz ay sonra gönderildi . Tüm cevapları potansiyel olarak değiştirmek için her birkaç ayda bir tüm sorularımı ziyaret etmem gerekiyor mu? Oylama düğmeleri bir nedenden dolayı var. En çok oylanan cevap, kabul edilen cevaptan daha fazla size yardımcı oluyorsa, kullanın. Seni kim durduruyor? Ama verdiğim yanıtı kabul ettim çünkü bana yardımcı oldu ve ben de soruyu soran kişi oldum.
Ryan Lundy

Yanıtlar:


195

Sadece bu hatayı Windows'ta gördüm ve bunun anlamı, bir şeyin bir yama uygulamaya çalıştığı anda bir dosyayı değiştirmesini engellediği anlamına geliyor.

Windows, işlemlere gerçekten gerekli olmadığında dosyalara özel erişim verme eğilimindedir, geçmişte virüs denetleyicileri bir şüphe kaynağıydı, ancak bunu kesin olarak kanıtlamadım.

Muhtemelen yapılacak en kolay şey, bir dahaki sefere gerçekleşmeyeceğini umarak iptal etmek ve tekrar denemek.

git rebase --abort

Kullanmaya çalışabilirsiniz git applyve taahhüt git git yapmadan önce ne yapmaya çalıştığını bilmek bir git rebase --continueama tüm dürüstlük ben bunu tavsiye etmem. Çoğu zaman bunun denendiğini gördüğümde, bir şeyin yanlışlıkla gözden kaçırılması veya dağınık hale gelmesi şansı daha iyi olmuştur.


6
@Kyralessa: Hmmm, yeniden başlatmayı denedin mi? Bir şey bu dosyayı sürekli olarak kilitliyorsa, yeniden başlattıktan sonra (veya dosyayı serbest bırakan biraz daha az köklü bir şeyden sonra) git checkout -- previously-locked-filegeri dönüp çalıştırabilmeniz gerekir.
CB Bailey

51
Eh, hala tam olarak ne olduğundan emin değilim, ama en iyi şekilde söyleyebileceğim kadarıyla VS 2010 dosyayı kilitliyordu (çünkü bir .xml doc dosyasıydı). Process Explorer bu dosyayı kilitleyen bir şey bulamadı, ancak VS'den çıktıktan sonra git checkoutdosyayı geri almak için kullanabildim (içinde git statussilindi) ve şimdi her şey geri dönmeye / ezmeye çalışmadan önceki gibi geri döndü. Belki de tekrar denemeliyim, ancak bu noktada biraz rahatsızlık hissediyorum.
Ryan Lundy

3
Takip, birçok ay sonra: Bu problemi bir daha yaşamadım. Yeniden pazarlama, etkileşimli yeniden basma dahil olmak üzere iyi çalıştı. Anlık bir VS dosya kilitleme aksaklığı olmalıydı.
Ryan Lundy

49
Visual Studio 2010'u kapatmak benim için de düzeltildi
Trev

4
Atom da görünüşe göre dosyaları kilitliyor. Yeniden başlatma düzeltildi.
Augustin Bralley

653

Editörler, gezgin pencereleri, komut istemleri ve FTP programları gibi klasörü açık olan programları kapatmayı deneyin. Bu, Windows'ta benim için her zaman sorunu giderir.


72
Aynı hatayı alıyordum. Sadece görsel stüdyosu kapattım ve her şey çalıştı.
jacobsimeon

6
WinLess LESS -> CSS dönüştürücünün arka planda saklandığını hatırlamadan önce aklıma gelen her şeyi kapattım.
Michael Martin-Smucker

6
Birleştirmeye çalıştığımda Visual Studio bir nuget paketinde bir kilit tuttu. VS'yi kapatmak benim için çalıştı.
CodeHxr

7
Windows'da gördüğüm bu hatanın en yaygın kaynağı, Visual Studio'nun dosyaları kilitlemesidir. Belirtildiği gibi, dalları değiştirmeden, birleştirmeden vb. Önce
VS'yi

5
Atom için "Ben de" cevabı. Dosyaları ve dizinleri kilitliyor gibi görünüyor; kapatılması sorunu çözer.
ajm

277

Sadece IDE'nizi kapatın (VISUAL STUDIO / ATOM vb.). Çalışabilir


1
IntelliJ'de, çalışan Tomcat hizmetini durdurmak benim için çalıştı. IDE'yi yeniden başlatmaktan biraz daha kolay.
Phil Carter

Ayrıca benim için çalışan bir Git Bash penceresi açıldı.
Vince I

Tuz değerinde herhangi bir IDE bir repo bir şey kilitleme olmamalıdır ... başparmak yukarıya !!
LightCC

Windows 10'da Atom'u kullanarak geçici bir şubeye teslim ettikten sonra bu sorunla karşılaşın. Atom'u kapatıp yeniden açmak sorunu benim için çözdü.
mickburkejnr

24

Bunu makinemde gördüğümde, "bazı işlemlerde dosya açık" durumundan daha kötü. Dosyanın asıl sahipliği, (yönetici olarak çalıştırıyorum) yalnızca yeniden başlattıktan sonra erişebildiği noktaya kadar jacked edilir.

En yakınları söyleyebilirim, IIS sorunun bir parçasıdır. Değiştirmek için çok fazla dosya gerektiren iki ana dal arasında geçiş yaparsam, IIS bir şey veya başka bir şey yapmaya çalışırken git bir dosya veya dizini (genellikle DLL) siler. Bu noktada, IIS işlemi diskteki dosyanın üzerine otomatik olarak kilitli ve hiç kimsenin sahip olmadığı görülen bir sürümün üzerine yazar.

IIS'yi bu noktada durdurmak bunu yapmaz. Yaptığım en iyi şey, yeniden başlatmak ve gelecekte büyük dallar arasında değişmeden önce IIS'yi durdurmayı unutmayın.

Bunun soruyu gerçekten cevaplamadığını biliyorum, ama başkalarına yardımcı olabilir.


Merhaba, Mike ... biz de aynı sorunu yaşıyoruz, ama maviden çıktı. Aynı işlemi IIS çalıştıran birçok projede kullanıyoruz ve hiçbir zaman sorun yaşamadık. Bir gün, yine de, olmaya başlar ... şaşırtıcı ve sinir bozucu. Bunu yazdığından beri daha fazla şey öğrendin mi?
Ethan Brown

Anlayışınız için teşekkürler Mike - benim durumumda bir önceki şubeye farklı bir bağlanma URL'si olan bir ASP.NET MVC projesi ile eski bir dalı kontrol Visual Studio sonra IIS projedeki bazı dosyaları bir kilit tutmak neden oldu. IIS'de uygun apppool'u durdurmak kilidi kaldırdı.
fundead

IIS benim için suçluydu; Bu hızlı bir açılır iisresetdosya kilitleri serbest bırakmak gibi görünüyor.
alexm

OneDrive'da da aynı şeyin gerçekleştiğini gördüm: OneDrive'da depolanan bir repodaki dalları değiştirmek gerçekten kafa karıştırıyor
CharlieB

Bu da bana win10'da oldu, yeniden başlatma gerektiriyordu ama iisresetçözümü test etmedim .
qdread

17

Windows'da bu dosyaları engelleyen bir TortoiseGIT işlemi olabilir. Görev yöneticisini açın ve TGitCache.exe'yi sonlandırın .


2
Bilmek güzel, benim durumumda TortoiseGit kullanmıyorum; Sadece komut satırını kullanıyorum.
Ryan Lundy

13

Ben sadece bu iş parçacığı üzerine tökezledi - bu hata böyle bir sahte hata. # Hata: stat 'reddit / app / views / links' olamaz: İzin reddedildi

Tüm aldığım bu - birleştirmeye çalışırken. Birkaç cevabı okudum ve sonra farkına vardım - tek yapmam gereken Atom olan kod düzenleyicimi kapatmaktı.

Editör kapatıldıktan sonra - "git merge" i tekrar çalıştırdım ve patladı, işe yaradı.

Ne anlamsız bir hata :(


Teşekkür ederim! Listede her gün 'doğru' cevabı görmeyeceksiniz. Bunun doğru cevabı işaretlemesini tavsiye ederim. Mevcut işlemi iptal etmek yerine, gerçek sorunu çözmek mantıklıdır.
Nikhil Kuriakose

12

vscode kullanıyorsanız, terminali öldürün ve yenisini açın. başka belki de terminali kapat


Bu, süreç kilitleme falan gibi görünüyordu
Mike Upjohn

10

Bu bazen Windows'ta başıma geliyor

hata: 'dosyaadı' statüsü verilemiyor: İzin reddedildi

Çoğu zaman bit bash'ın birden fazla örneğini açtım ve git bash örneklerinden biri, çektiğim uzak dalda bulunmayan bir dizinde.

Bir git bash örneği dışında tümünü kapatmak sorunu benim için çözer.


9

Kullandığınız IDE (bir tane kullanmanız durumunda) da engelliyor olabilir. QtCreator kullanırken bana olan buydu.


PhpStorm kullanarak böyleydim. Yeniden başlatıldığında hata düzeltildi.
lancemonotone

7

Win 10'da SourceTree kullanmak Atom düzenleyicisini kapatarak sorunu çözdü.

Yeniden oluşturma hatası:

  1. B dalında, Atom dosyasını kullanarak bir md dosyası oluşturun, kaydedin ve taahhüt edin.
  2. A dalına geçin, sunucudan yeni taahhütler alın.
  3. Geri dönmeyi deneyin, Opps, “hata: 'dosya' statüsü yapılamıyor: İzin reddedildi” yazıyor.

6

Bu, SublimeText'i kullandığınızda ve programı satın almanızı isteyen açılır pencere kapatılmadığında da olabilir.


1
Ayrıca Atom ile sadece proje / dosya ağacını açık tutarak aldım
Hal

1
@Hal gibi benim de Atom'la ilgilendim. Bunun nedeni, bir daldaki bir klasörün başka bir dalda olmamasıdır. Atom'u kapatmak sorunu düzeltir, ancak proje ağacını da (klasörü gizlemek için) daraltabilirsiniz ve bu da işe yarar.
jsalwen

6

Bu genellikle projeyi izlerken Prepros veya Codekit gibi önişleme yazılımlarınız / uygulamalarınız olduğunda olur. Ayrıca, Atom ve Sublime (ve hatta Notepad ++), projedeki bir dosya şu anda düzenleniyorsa bunun olmasına neden olabilir.

Sorunun en kolay yolu, proje dosyaları açık olan her şeyi kapatmak, dallarınızı birleştirmek ve ardından yenilemek için yeniden açmaktır. Bu, programın artık gerçekleşen değişikliklerden haberdar olmadığı sorunları da önleyecek ve sizi projeyi / projeleri el ile yenilemeye zorlayacaktır.


1
Ey adamım! Arka planda karaağaç yaşıyordum. Bu beni bir ton baş ağrısından kurtardı.
frostymarvelous

6

Web paketini çalıştırıyorsanız kapatın. IDE'nizi de kapatın. Bunları yaptıktan sonra iyi çalışmalı.


4

Benzer bir sorun yaşadım. Ancak çözülmesi çok basitti. Bir Windows makinesinde, dosya gezgilimde bir dalda bulunan ancak teslim aldığım diğer klasörde olmayan bir klasör açıktı. Dosya gezgini kapatıldığında sorun çözüldü.


4

Bunu Win 7 altında yaptım.

$ git stash pop hatası: 'parentFolder / alt klasör' statüsü olamaz: İzin reddedildi hatası: 'parentFolder / alt klasör' statüsü olamaz: İzin reddedildi

Teşhis:

1> Alt klasöre gittim ve orada ve onu silemedim!

2> "süreç gezgini" kullanın -> Bul -> Kolları ve Dll'leri bul -> "alt klasör" adını oraya koyun ve arayın.

Sonuç: XMLSpy'ın xml'den birini açtığı, XML Spy'ı kapattığı ve stash pop'u tekrar deneyin, şimdi çalışıyor.


4

IntelliJ entegre terminalinin içine yeniden basarken Windows'ta bana oldu . Git bash istemci yönetim ortamının paralel çalıştığını fark ettim .

Git bash'ın kapatılması sorunu çözdü.


2

Bu sorunla karşılaşmam editörüm Intellij'den kaynaklandı. Dahili sürüm kontrollerinin bir parçası olarak, tüm gizli git dosyalarını geçip kilitlemişti. (Çeşitli nedenlerle, Intellij ile gelen git eklentisini kullanmıyordum ...)

Bu yüzden Yönetici olarak normal bir dos penceresi açtım, dizine geçtim ve

attrib -R /S

Bu, dosyaların kilidini kaldırdı ve bundan sonra her şey çalıştı ve GitHub windows istemcisini kullanarak değişiklikleri senkronize edebilirim.


2

Yukarıdaki "Close Visual Studio" yanıtlarına katılıyorum.

Ancak, Visual Studio'yu kapattıktan sonra bile yapmam gereken ek bir adım , Görev Gezgini'nde "devenv.exe" Visual Studio işlemini el ile öldürmekti . Bunu yaptıktan sonra tekrar gitbash'ta koşabildim:

git çekme

ve "stat dosya adı değiştirilemiyor " hatası kayboldu. Belki de kapanıştan sonra bile süreci daha uzun süre açık tutan bir Visual Studio uzantısıdır.


2

Bu sorunu yaşadım. Mesele şu ki - dosyayı açtıysanız, rebase'den sonra kaldırıldı \ değiştirildi (artık bu dosyaya sahip olmayan bir şubeniz vardı), git sistemi bozulur. Bu yüzden tüm açık dosyaları kapattım ve sonra başka bir şubede ödeme yapmaya çalıştım


2

Hemen hemen her yanıtın söylediği gibi dizini kilitleyebilecek tüm uygulamaları kapatmak yerine alternatif bir çözüm, her şeyi kapatmadan dosyaların / dizinin kilidini açacak bir yardımcı program kullanmak olacaktır. (Visual Studio'yu yeniden başlatmamdan nefret ediyorum)

LockHunter kullandığım biri: https://lockhunter.com/ Orada muhtemelen başkaları da var, ama bu benim için harika çalıştı.


1

Windows 10 64 Bit'te aynı sorun, Git Bash 2.9.0.windows1'i çalıştırıyor. Atom, editörüm olarak kullanılıyor.

Bu benim için çalıştı: Git yazılım klasörünü (benim için bu C: \ Program Files \ Git) Windows Defender'ın hariç tutmalarına ekledim.

Hariç tutma eklendikten sonra git checkout 'file'iyi çalıştı.


1

Bu hata, önceki git eylemleri nedeniyle dosyaların hala "kilitli" olmasından kaynaklanabilir. Windows dosya sistemi katmanının nasıl çalıştığı ile ilgilidir. Bir keresinde bununla ilgili güzel bir açıklama okudum, ama nerede olduğunu hatırlayamıyorum.

Ancak bu durumda, temelde bir yarış koşulu olduğu için yapmanız gereken tek şey kesintiye uğramış rebase sürecinize devam etmektir . Ne yazık ki bu her zaman başıma geliyor, bu yüzden rebaslarımı devam ettirmek için bu küçük tehlikeli yardımcıyı yazdım :

#!/bin/sh

set -e

git checkout .
git clean -df
git rebase --continue

Ekstra emin olmak istiyorsanız, git rebase --edit-todouygulanacak bir sonraki işlemin gerçekten daha önce uygulanamayan işlem olup olmadığını kontrol etmek için kullanabilirsiniz . git clean -dnÖnemli dosyaları silmediğinizden emin olmak için kullanın .


1

Pencerelerde, photoshop kullanırken bana oldu: Bir görüntüyü kaydettiğimde ve daha sonra bir şubeye geçtiğimde (görüntü açıkken photoshop bırakarak) git hatasını aldım. Görüntüyü photoshop'ta kapatın ve tekrar deneyin



1

Depo ile ilgili w3wp.exe işlemini öldürmek bunu benim için düzeltti.


1

Benim durumumda, arkasında çalışan bir webpack dev sunucusu vardı.


0

VS1013'üm 8.1'i hedefleyen bir daldayken bu hatayı aldım ve 8.0 şubesini kontrol etmeye çalışıyordum. VS geri sekmek ve UpdateAll izin gerekiyordu. Sonra 8.0 şubesini hatasız kontrol edebilirim.


0

Aynı hatayla karşılaştığımda Git Shell kullanan bir Windows makinesindeydim.

Ancak, o zaman birden fazla Git terminali açtım.

İlk terminal, yukarıda bahsettiğiniz hatayı aldı ve diğer terminal daha önce grunt serveyeoman'dan (aşağıda bağlantılı) terminal komutunu çalıştırdı . İkinci terminalin bir yerel sunucu örneğini barındırmak için açık kalması gerekiyordu.

Devam eden işlemleri çalıştıran tüm terminal pencerelerinin kapatılması hatanın ortadan kalkmasına neden olabilir.

En azından benim için işe yarayan buydu. İkinci terminal penceresini kapattıktan sonra, farklı dalları kolayca kontrol edebilir ve dosyaları işleyebilirim.

Grunt Hizmet Komutanlığı - Yeoman.I / O
http://yeoman.io/learning/


0

Bu konuya yeni girdim. Buradaki cevapların hiçbiri bunu benim için çözmedi.

Sonunda bir kez ana şubeye döndüğümde, var olmayan bir dalda eklediğim nuget paketleri oldu. Bir kez birleştirme yaptım newtonsoft ... xml stat olamazdı söyleyebilirim. Söz konusu dosyaya gidip açardım, ancak Windows dosyayı bulamadığını söyleyerek bir hata attı (doğru baktığım halde)

Nasıl bu çözüldü sağ tıklama dosya silmek oldu (hangi çalıştı ama windows bulamadı ???) çünkü açamadı ve tekrar birleştirme deneyin ve sorunu çözdü.

Çok ilginç.

Umarım bu daha sonra birine yardımcı olur.


0

Proje dizinlerine erişen metin düzenleyicimden çıktım, sonra ana dalla birleşmeyi denedim ve işe yaradı.

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.