Saya menggunakan git, dan membuat komit kecil diikuti oleh yang besar. Saya memutuskan untuk menggunakan git rebase
untuk menekan kedua komit bersama sebelum mendorong mereka. (Aku belum pernah melakukan ini sebelumnya.)
Jadi saya melakukannya:
git rebase -i HEAD~2
Ini memberi saya editor saya, di mana saya memilih untuk memilih komit sebelumnya dan menghancurkan yang kemudian. Ketika saya menabung, git berkata:
kesalahan: tidak bisa stat ' nama file ': Izin ditolak
Tidak dapat menerapkan sha1 untuk commit selanjutnya ... baris teks awal untuk komit itu
Sekarang:
- Komit tidak muncul saat saya melakukannya
git log
. git status
memberi tahu saya bahwa saya "Saat ini tidak di cabang mana pun."- Satu file terdaftar sebagai dimodifikasi dan dalam indeks, dan dua file terdaftar sebagai tidak terlacak. Komit pertama saya hanya memiliki satu file (saya pikir), dan komit kedua saya memiliki selusin yang baik.
Apa yang terjadi!? Bagaimana saya memperbaikinya?
git
git-rebase
Ryan Lundy
sumber
sumber
Jawaban:
Saya hanya pernah melihat kesalahan ini pada Windows dan apa yang tampaknya berarti adalah bahwa sesuatu memblokir git dari memodifikasi file pada saat itu ketika mencoba menerapkan patch.
Windows cenderung memberikan proses akses eksklusif ke file ketika seharusnya tidak benar-benar diperlukan, di masa lalu virus checker telah menjadi salah satu sumber kecurigaan tetapi saya tidak pernah membuktikan ini secara meyakinkan.
Mungkin hal termudah untuk dilakukan adalah membatalkan dan mencoba lagi, berharap itu tidak terjadi di lain waktu.
Anda dapat mencoba menggunakan
git apply
dan pengetahuan tentang apa yang sebenarnya dilakukan komit git sebelum melakukangit rebase --continue
tapi jujur saja saya tidak akan merekomendasikan ini. Sebagian besar kali saya melihat ini mencoba, ada kesempatan yang lebih baik daripada bahkan bahwa ada sesuatu yang tidak sengaja terjawab atau kacau.sumber
git checkout -- previously-locked-file
dan kembali dan berjalan.git checkout
untuk mendapatkan file kembali (digit status
dalamnya telah dihapus), dan sekarang semuanya kembali seperti sebelum saya mencoba untuk rebase / squash. Mungkin saya harus mencoba lagi, walaupun saya merasa sedikit mual pada saat ini.Coba tutup semua program yang memiliki folder terbuka, seperti editor, windows explorer, prompt perintah, dan program FTP. Ini selalu memperbaiki masalah bagi saya di Windows.
sumber
Cukup tutup IDE Anda (VISUAL STUDIO / ATOM dll). Mungkin berhasil
sumber
Ketika saya melihat ini di komputer saya, ini lebih buruk daripada hanya "beberapa proses membuka file". Kepemilikan sebenarnya dari file tersebut akan didongkrak ke titik di mana saya (berjalan sebagai administrator) hanya dapat mengaksesnya setelah reboot.
Paling dekat yang bisa saya katakan, IIS adalah bagian dari masalah. Jika saya beralih di antara dua cabang utama yang memerlukan banyak file untuk dimodifikasi, git akan menghapus file atau direktori (biasanya DLL) ketika IIS mencoba melakukan sesuatu atau yang lain dengannya. Pada titik ini, proses IIS secara otomatis menimpa file pada disk dengan versi yang terkunci dan tampaknya dimiliki oleh siapa pun.
Menghentikan IIS pada titik ini tidak berhasil. Yang terbaik yang saya temukan adalah melakukan reboot, dan ingat untuk menghentikan IIS sebelum berganti cabang besar di masa depan.
Saya tahu itu tidak benar-benar menjawab pertanyaan, tetapi mungkin bermanfaat bagi orang lain.
sumber
iisreset
sepertinya melepaskan kunci file.iisreset
solusinya.Di Windows, ini bisa menjadi proses TortoiseGIT yang memblokir file-file itu. Buka task manager dan akhiri proses TGitCache.exe .
sumber
Saya baru saja menemukan utas jawaban ini - kesalahan ini adalah kesalahan Bogus. # Error: tidak dapat membuat stat 'reddit / app / views / links': Izin ditolak
Hanya itu yang saya dapatkan - ketika mencoba untuk bergabung. Saya membaca beberapa jawaban dan kemudian menyadari - yang harus saya lakukan adalah menutup editor kode saya yang kebetulan adalah Atom.
Setelah menutup editor - saya menjalankan "git merge" lagi dan boom, itu berhasil.
Apa kesalahan yang tidak ada gunanya :(
sumber
jika menggunakan vscode, matikan terminal dan buka yang baru. lain mungkin tutup terminal juga
sumber
Ini terjadi pada saya di Windows sesekali
Paling sering saya memiliki beberapa contoh bit bash terbuka, dan salah satu contoh git bash ada di direktori yang tidak ada di cabang jauh saya menarik dari.
Menutup semua kecuali satu contoh git bash memecahkan masalah bagi saya.
sumber
Jika IDE yang Anda gunakan (kalau-kalau Anda menggunakannya) mungkin juga menghalangi. Itulah yang terjadi pada saya ketika menggunakan QtCreator.
sumber
Menggunakan SourceTree di Win 10, perbaiki masalah dengan menutup Editor Atom.
Kesalahan mereproduksi:
sumber
Ini juga dapat terjadi ketika Anda menggunakan SublimeText dan jendela sembulan yang meminta Anda untuk membeli program tidak ditutup.
sumber
Ini sering terjadi ketika Anda memiliki perangkat lunak / aplikasi preprocessing menonton proyek, seperti Prepros atau Codekit. Juga, Atom dan Sublime (dan bahkan Notepad ++) dapat menyebabkan ini terjadi jika file dalam proyek saat ini sedang diedit.
Cara termudah untuk mengatasi masalah ini adalah dengan menutup apa pun yang memiliki file proyek terbuka, menggabungkan cabang Anda, dan kemudian buka kembali untuk menyegarkannya. Ini juga akan menghindari masalah di mana program tidak lagi menyadari perubahan yang telah terjadi, memaksa Anda untuk menyegarkan proyek dengan tangan.
sumber
Jika Anda menjalankan webpack matikan. Matikan IDE Anda juga. Seharusnya bekerja dengan baik setelah melakukan hal-hal itu.
sumber
Saya punya masalah serupa. Tapi itu sangat sederhana untuk diselesaikan. Pada mesin Windows, file explorer saya memiliki folder terbuka yang ada di satu cabang tetapi tidak di yang lain saya check out. Menutup File explorer menyelesaikan masalah.
sumber
Saya baru saja memilikinya di bawah Win 7.
$ git stash pop error: tidak bisa stat 'parentFolder / subfolder': Izin ditolak error: tidak bisa stat 'parentFolder / subfolder': Izin ditolak
Diagnosa:
1> Saya pergi ke subfolder dan ada di sana dan saya tidak bisa menghapusnya!
2> Gunakan "proses explorer" -> Temukan -> Temukan pegangan dan Dll -> letakkan nama "subfolder" di sana dan cari.
Hasil: Ternyata itu XMLSpy telah membuka salah satu xml di sana, tutup XML Spy dan coba simpanan pop lagi, itu berfungsi sekarang.
sumber
Terjadi pada saya di Windows saat rebasing di dalam terminal terintegrasi IntelliJ . Saya perhatikan bahwa saya memiliki Git bash menjalankan instance client secara paralel.
Clash Git bash menyelesaikan masalah.
sumber
Pertemuan saya dengan masalah ini disebabkan oleh editor saya, Intellij. Sebagai bagian dari kontrol versi internalnya, ia telah melalui dan mengunci semua file git yang tersembunyi. (Karena berbagai alasan, saya tidak menggunakan plugin git yang disertakan dengan Intellij ...)
Jadi saya membuka jendela dos normal sebagai Administrator, berubah ke direktori, dan dieksekusi
Itu menghapus kunci pada file dan semuanya bekerja setelah itu dan saya bisa menyinkronkan perubahan saya menggunakan klien windows GitHub.
sumber
Saya setuju dengan jawaban "Tutup Visual Studio" di atas.
Namun, langkah tambahan yang harus saya lakukan bahkan setelah saya menutup Visual Studio adalah untuk secara manual membunuh proses "devenv.exe" Visual Studio di Task Explorer. Setelah saya melakukan ini, saya bisa kembali berlari di gitbash:
dan kesalahan " tidak bisa nama file stat " menghilang. Ini mungkin karena ekstensi Visual Studio menjaga proses terbuka lebih lama bahkan setelah penutupan.
sumber
Saya baru saja mengalami masalah ini. Masalahnya adalah - jika Anda telah membuka file, itu dihapus \ diganti setelah rebase (Anda memiliki cabang yang tidak memiliki file ini lagi), sistem-git rusak. Jadi saya menutup semua file yang dibuka dan kemudian mencoba untuk checkout di beberapa cabang lainnya
sumber
Solusi alternatif daripada menutup semua aplikasi yang mungkin mengunci direktori seperti yang hampir setiap jawaban lain katakan, adalah menggunakan utilitas yang akan membuka kunci file / direktori tanpa menutup semuanya. (Aku benci harus me-restart Visual Studio)
LockHunter adalah yang saya gunakan: https://lockhunter.com/ Kemungkinan ada orang lain di luar sana, tetapi yang ini bekerja sangat baik untuk saya.
sumber
Masalah yang sama pada Windows 10 64 Bit, menjalankan Git Bash versi 2.9.0.windows1 Menggunakan Atom sebagai editor saya.
Ini bekerja untuk saya: Saya menambahkan folder perangkat lunak Git (bagi saya, ini adalah C: \ Program Files \ Git) ke pengecualian untuk Windows Defender.
Setelah pengecualian ditambahkan,
git checkout 'file'
berfungsi dengan baik.sumber
Kesalahan ini juga dapat disebabkan oleh fakta bahwa file masih "terkunci" karena tindakan git sebelumnya. Ini berkaitan dengan cara kerja lapisan sistem berkas Windows. Saya pernah membaca penjelasan yang bagus tentang ini, tetapi saya tidak ingat di mana.
Namun dalam hal itu, karena ini pada dasarnya adalah kondisi balapan, yang harus Anda lakukan adalah melanjutkan proses rebase yang terputus . Sayangnya ini terjadi pada saya sepanjang waktu, jadi saya menulis pembantu kecil yang berbahaya ini untuk membuat rebases saya terus:
Jika Anda ingin lebih yakin, Anda bisa menggunakannya
git rebase --edit-todo
untuk memeriksa apakah komit berikutnya untuk diterapkan adalah benar-benar yang gagal diterapkan sebelumnya. Gunakangit clean -dn
untuk memastikan Anda tidak menghapus file penting apa pun.sumber
Terjadi pada saya ketika di windows, saat menggunakan photoshop: Ketika saya menyimpan gambar dan kemudian beralih ke cabang (meninggalkan photoshop dengan gambar dibuka) saya mendapat kesalahan git. Tutup gambar di photoshop dan coba lagi
sumber
Jika Anda memiliki alat gabungan Meld terbuka, tutup itu. Itu memblokir menimpa file.
sumber
Membunuh proses w3wp.exe terkait dengan repositori memperbaiki ini untuk saya.
sumber
Dalam kasus saya, saya memiliki server dev webpack berjalan di belakang.
sumber
Saya mendapatkan kesalahan ini ketika VS1013 saya berada di cabang yang menargetkan 8.1 dan saya mencoba untuk checkout cabang 8.0. Saya perlu mengetuk kembali ke VS dan mengizinkannya untuk UpdateAll. Lalu saya bisa checkout cabang 8.0 tanpa kesalahan.
sumber
Saya juga menggunakan mesin Windows menggunakan Git Shell ketika saya mengalami kesalahan yang sama.
Namun, pada saat itu saya memiliki beberapa terminal Git terbuka.
Terminal pertama menerima kesalahan yang Anda posting di atas dan terminal lain sebelumnya menjalankan
grunt serve
perintah terminal dari yeoman (ditautkan di bawah). Terminal kedua harus tetap terbuka untuk menjadi tuan rumah instance server lokal.Mematikan semua jendela terminal yang menjalankan proses yang sedang berlangsung dapat menyebabkan kesalahan hilang.
Setidaknya itulah yang berhasil bagi saya. Setelah saya menutup jendela terminal kedua, saya dapat dengan mudah memeriksa berbagai cabang dan memanipulasi file.
Grunt Serve Command - Yeoman.I / O
http://yeoman.io/learning/
sumber
Saya baru saja mengalami masalah ini. Tidak ada jawaban di sini yang terjadi untuk menyelesaikan ini untuk saya.
Akhirnya menjadi paket nuget yang saya tambahkan di cabang yang, setelah beralih kembali ke cabang master, sepertinya tidak ada. Setelah saya melakukan penggabungan itu akan mengatakan newtonsoft ... xml tidak bisa stat. Saya akan pergi ke file yang dimaksud dan membukanya tetapi Windows melemparkan kesalahan kembali mengatakan tidak dapat menemukan file (meskipun saya sedang melihat langsung ke sana)
Bagaimana saya menyelesaikan ini adalah klik kanan hapus file (yang berfungsi tetapi saya tidak bisa membukanya karena windows tidak dapat menemukannya ???) dan mencoba untuk bergabung lagi dan itu memecahkan masalah.
Sangat aneh.
Semoga ini bisa membantu seseorang nanti.
sumber
Saya keluar dari editor teks saya yang sedang mengakses direktori proyek, kemudian mencoba menggabungkan ke cabang master dan itu berhasil.
sumber