Używam git i dokonałem małego zatwierdzenia, a następnie dużego. Zdecydowałem się użyć git rebase
do zmiażdżenia dwóch commits razem przed ich wypchnięciem. (Nigdy tego nie robiłem.)
Więc zrobiłem:
git rebase -i HEAD~2
To dało mi mojego edytora, w którym wybrałem wcześniejsze zatwierdzenie i zgniecenie późniejszego. Kiedy uratowałem, git powiedział:
błąd: nie można stat „ nazwa pliku ”: odmowa dostępu
Nie można zastosować sha1 do późniejszego zatwierdzenia ... początkowy wiersz tekstu dla tego zatwierdzenia
Teraz:
- Żadne zatwierdzenie nie pojawia się, kiedy to robię
git log
. git status
mówi mi, że „Obecnie nie jestem w żadnej branży”.- Jeden plik jest wymieniony jako zmodyfikowany i w indeksie, a dwa pliki są wymienione jako nieśledzone. Moje pierwsze zatwierdzenie miało tylko jeden plik (tak mi się wydaje), a moje drugie zatwierdzenie miało dobry tuzin.
Co się stało!? Jak to naprawić?
git
git-rebase
Ryan Lundy
źródło
źródło
Odpowiedzi:
Zawsze widziałem ten błąd w systemie Windows i wydaje się, że oznacza to, że coś zablokowało gitowi modyfikowanie pliku w momencie, gdy próbował zastosować łatkę.
Windows zwykle zapewnia procesom wyłączny dostęp do plików, gdy nie jest to naprawdę konieczne, w przeszłości sprawdzanie wirusów było jednym z podejrzeń, ale nigdy nie udowodniłem tego jednoznacznie.
Prawdopodobnie najłatwiej jest przerwać i spróbować ponownie, mając nadzieję, że nie zdarzy się to następnym razem.
Możesz spróbować użyć
git apply
i wiedzieć, co faktycznie próbował zrobić git, zanim zrobiłeś,git rebase --continue
ale szczerze mówiąc nie poleciłbym tego. Przez większość czasu, gdy widziałem, jak to próbowałem, istniała większa niż kiedykolwiek szansa, że coś zostanie przypadkowo pominięte lub pomieszane.źródło
git checkout -- previously-locked-file
i być ponownie uruchomiony.git checkout
do odzyskania pliku (wgit status
nim został usunięty), a teraz wszystko wróciło tak, jak było przed próbą zmiany bazy / squasha. Może powinienem spróbować jeszcze raz, choć w tym momencie czuję się trochę nieswojo.Spróbuj zamknąć wszystkie programy, które mają otwarty folder, takie jak edytory, okna eksploratora, monity poleceń i programy FTP. To zawsze rozwiązuje problem dla mnie w systemie Windows.
źródło
Wystarczy zamknąć IDE (VISUAL STUDIO / ATOM itp.). To może zadziałać
źródło
Kiedy widzę to na moim komputerze, jest to gorsze niż tylko „jakiś proces ma otwarty plik”. Rzeczywista własność pliku zostaje podniesiona do tego stopnia, że ja (działając jako administrator) mogę uzyskać do niego dostęp dopiero po ponownym uruchomieniu.
Najbliższe mogę powiedzieć, IIS jest częścią problemu. Jeśli przełączę się między dwiema głównymi gałęziami, które wymagają modyfikacji wielu plików, git usunie plik lub katalog (zwykle biblioteki DLL), podczas gdy IIS próbuje coś z tym zrobić. W tym momencie proces IIS automatycznie zastępuje plik na dysku wersją, która jest zablokowana i wydaje się, że nie jest własnością nikogo.
Zatrzymanie IIS w tym momencie tego nie robi. Najlepsze, co udało mi się zrobić, to zrestartowanie komputera i pamiętaj, aby zatrzymać IIS przed zmianą w głównych oddziałach w przyszłości.
Wiem, że tak naprawdę nie odpowiada na pytanie, ale może być pomocny dla innych.
źródło
iisreset
wydaje się zwolnić blokady plików.iisreset
rozwiązania.W systemie Windows może to być proces TortoiseGIT, który blokuje te pliki. Otwórz menedżera zadań i zakończ proces TGitCache.exe .
źródło
Właśnie natknąłem się na ten wątek odpowiedzi - ten błąd to taki fałszywy błąd. # Error: Can Stat 'Reddit / App / Views / Links': Odmowa dostępu
To wszystko, co mam - próbując się połączyć. Przeczytałem kilka odpowiedzi, a potem doszedłem do wniosku - wszystko, co musiałem zrobić, to zamknąć edytor kodu, którym jest Atom.
Po zamknięciu edytora - uruchomiłem ponownie „git merge” i boom, zadziałało.
Co za bezsensowny błąd :(
źródło
jeśli używasz vscode, zabij terminal i otwórz nowy. w przeciwnym razie może też zamknąć terminal
źródło
Zdarza mi się to czasami w systemie Windows
Najczęściej mam otwartą wiele instancji bit bash, a jedna z instancji git bash znajduje się w katalogu, który nie istnieje w zdalnej gałęzi, z której pobieram.
Zamknięcie wszystkich wystąpień git bash oprócz jednego rozwiązuje dla mnie ten problem.
źródło
Jeśli IDE, którego używasz (w przypadku, gdy go używasz), może również przeszkadzać. Tak stało się ze mną podczas korzystania z QtCreatora.
źródło
Za pomocą SourceTree w Win 10 naprawiono problem przez zamknięcie edytora Atom.
Błąd odtwarzania:
źródło
Może się to również zdarzyć, gdy używasz SublimeText, a okienko wyskakujące z prośbą o zakup programu nie jest zamknięte.
źródło
Zdarza się to często, gdy masz oprogramowanie / aplikacje do wstępnego przetwarzania oglądające projekt, takie jak Prepros lub Codekit. Również Atom i Sublime (a nawet Notepad ++) mogą powodować, że plik w projekcie jest aktualnie edytowany.
Najłatwiejszym sposobem rozwiązania tego problemu jest zamknięcie tego, co ma otwarte pliki projektu, scalenie gałęzi, a następnie ponowne otwarcie ich w celu odświeżenia. Pozwoli to również uniknąć problemów, w przypadku których program nie będzie już świadomy żadnych zmian, które się wydarzyły, zmuszając do ręcznego odświeżenia projektu (projektów).
źródło
Jeśli korzystasz z webpacka, zamknij go. Zamknij także swoje IDE. Powinien działać dobrze po wykonaniu tych czynności.
źródło
Miałem podobny problem. Ale rozwiązanie tego problemu było bardzo proste. Na komputerze z systemem Windows mój eksplorator plików miał otwarty folder, który istniał w jednej gałęzi, ale nie w drugiej, którą wypisałem. Zamknięcie Eksploratora plików rozwiązało problem.
źródło
Właśnie miałem to pod Win 7.
$ git stash pop error: nie można stat 'parentFolder / podfolder': odmowa zezwolenia błąd: nie można stat 'parentFolder / podfolder: odmowa zezwolenia
Diagnoza:
1> Poszedłem do podfolderu i już tam jest i nie mogłem go usunąć!
2> Użyj „eksploratora procesów” -> Znajdź -> Znajdź uchwyty i biblioteki DLL -> wpisz tam nazwę „podfolderu” i wyszukaj.
Wynik: okazuje się, że XMLSpy otworzył tam jeden z plików xml, zamknij XML Spy i spróbuj ponownie ukryć pop, działa teraz.
źródło
Zdarzyło mi się to w systemie Windows podczas aktualizacji w zintegrowanym terminalu IntelliJ . Zauważyłem, że mam równoległą instancję klienta Git bash .
Zamknięcie Git Bash rozwiązało problem.
źródło
Moje spotkanie z tym problemem zostało spowodowane przez mojego redaktora, firmę Intellij. W ramach wewnętrznych kontroli wersji przejrzał i zablokował wszystkie ukryte pliki git. (Z różnych powodów nie korzystałem z wtyczki git dostarczanej z Intellij ...)
Więc otworzyłem normalne okno dos jako Administrator, zmieniłem katalog i wykonałem
To usunęło blokadę plików i wszystko działało potem i mogłem zsynchronizować moje zmiany za pomocą klienta Windows GitHub.
źródło
Zgadzam się z powyższymi odpowiedziami „Zamknij Visual Studio”.
Jednak dodatkowym krokiem, który musiałem zrobić, nawet po zamknięciu programu Visual Studio, było ręczne zabicie procesu Visual Studio „devenv.exe” w Eksploratorze zadań. Po wykonaniu tej czynności mogłem ponownie uruchomić w gitbash:
i zniknął błąd „ nie można stat nazwa pliku ”. Być może wynika to z rozszerzenia Visual Studio, które utrzymuje proces otwarty dłużej nawet po zamknięciu.
źródło
Właśnie miałem ten problem. Chodzi o to, że jeśli otworzyłeś plik, który został usunięty \ zastąpiony po zmianie bazy (miałeś gałąź, która nie ma już tego pliku), system git psuje się. Więc zamknąłem wszystkie otwarte pliki, a następnie spróbowałem kasy w innym oddziale
źródło
Alternatywnym rozwiązaniem zamiast zamykania wszystkich aplikacji, które mogą blokować katalog, tak jak w przypadku każdej odpowiedzi, jest użycie narzędzia, które odblokuje pliki / katalog bez zamykania wszystkiego. (Nienawidzę konieczności ponownego uruchamiania programu Visual Studio)
LockHunter jest tym, którego używam: https://lockhunter.com/ Prawdopodobnie są też inni, ale ten zadziałał dla mnie świetnie.
źródło
Ten sam problem w 64-bitowym systemie Windows 10 z uruchomionym Git Bash w wersji 2.9.0.windows1 Używanie Atom jako mojego edytora.
To działało dla mnie: dodałem folder oprogramowania Git (dla mnie był to C: \ Program Files \ Git) do wyłączeń dla Windows Defender.
Po dodaniu wykluczenia
git checkout 'file'
działało dobrze.źródło
Ten błąd może być również spowodowany tym, że pliki są nadal „blokowane” z powodu wcześniejszych akcji git. Ma to związek z działaniem warstwy systemu plików Windows. Kiedyś przeczytałem ładne wyjaśnienie na ten temat, ale nie pamiętam gdzie.
W takim przypadku jednak, ponieważ jest to w zasadzie warunek wyścigu, wszystko, co musisz zrobić, to kontynuować przerwany proces zmiany bazy . Niestety, zdarza mi się to cały czas, więc napisałem do tego małego niebezpiecznego pomocnika, aby moje bazy działały dalej:
Jeśli chcesz się upewnić, możesz użyć,
git rebase --edit-todo
aby sprawdzić, czy następne zatwierdzenie, które ma zostać zastosowane, jest tym, którego wcześniej nie zastosowano. Użyj,git clean -dn
aby upewnić się, że nie usuwasz żadnych ważnych plików.źródło
Zdarzyło mi się, gdy w systemie Windows korzystałem z Photoshopa: kiedy zapisałem obraz, a następnie przełączyłem się na oddział (pozostawiając Photoshopa z otwartym obrazem), dostałem błąd git. Zamknij obraz w Photoshopie i spróbuj ponownie
źródło
Jeśli masz otwarte narzędzie scalania Meld , zamknij je. Blokuje nadpisywanie pliku.
źródło
Zabicie procesu w3wp.exe związanego z repozytorium naprawiło to dla mnie.
źródło
W moim przypadku miałem za sobą serwer deweloperów webpack.
źródło
Wystąpił ten błąd, gdy mój VS1013 był na gałęzi kierującej się na wersję 8.1 i próbowałem wyewidencjonować gałąź 8.0. Musiałem wrócić do VS i pozwolić mu na UpdateAll. Wtedy mógłbym bez problemu sprawdzić gałąź 8.0.
źródło
Byłem również na komputerze z systemem Windows przy użyciu Git Shell, gdy napotkałem ten sam błąd.
Jednak w tym czasie miałem wiele otwartych terminali Git.
Pierwszy terminal otrzymał błąd, o którym pisałeś wyżej, a drugi terminal wcześniej uruchomił
grunt serve
polecenie terminalu od yeoman (link poniżej). Drugi terminal musiał pozostać otwarty, aby obsługiwać lokalną instancję serwera.Zamknięcie wszystkich okien terminali z uruchomionymi procesami może spowodować zniknięcie błędu.
Przynajmniej to działało dla mnie. Po zamknięciu drugiego okna terminala mogłem łatwo pobierać różne gałęzie i manipulować plikami.
Grunt Serve Command - Yeoman.I / O
http://yeoman.io/learning/
źródło
Właśnie natrafiłem na ten problem. Brak odpowiedzi tutaj rozwiązał to dla mnie.
Skończyło się na pakietach nuget, które dodałem do gałęzi, która po przełączeniu z powrotem na gałąź master wydawała się nie istnieć. Kiedy zrobiłem scalenie, powiedziałoby to, że newtonsoft ... xml nie mógł stat. Chciałbym przejść do tego pliku i otworzyć go, ale system Windows zwrócił błąd, mówiąc, że nie może znaleźć pliku (mimo że patrzyłem na niego bezpośrednio)
Jak to rozwiązałem, kliknij prawym przyciskiem myszy usuń plik (który działał, ale nie mogłem go otworzyć, ponieważ system Windows nie mógł go znaleźć ???) i spróbuj połączyć ponownie, a to rozwiązało problem.
Bardzo dziwny.
Mam nadzieję, że to pomoże komuś później.
źródło
Opuściłem edytor tekstu, który uzyskiwał dostęp do katalogów projektu, a następnie spróbowałem połączyć się z gałęzią master i działało.
źródło