Di server jarak jauh saya memiliki hook pascakenerima yang diatur untuk membuat checkout git dari repositori saya:
#!/bin/sh
GIT_WORK_TREE=/var/www/<website> git checkout -f
Tetapi ketika saya melakukan push dari mesin lokal saya ke repositori git di server, saya mendapatkan pesan kesalahan berikut:
remote: error: unable to unlink old '<file>' (Permission denied)
Ini muncul berulang kali, satu pesan kesalahan untuk hampir setiap file.
Namun saya memiliki file README.txt yang dapat saya ubah menggunakan git, berikut ini izinnya:
-rw-r--r-- 1 <serverusername> <serverusername> 2939 Aug 2 10:58 README.txt
Tetapi file lain dengan pemilik yang sama persis dan izin yang sama, beri saya kesalahan itu.
Di repositori lokal lain untuk situs web lain, saya memiliki file dengan nama pengguna mesin lokal saya sebagai pemilik, dan ketika saya mendorong ke server jauh itu menghormati pemilik server jauh dari file dan bekerja seperti pesona.
Jelas itu tampaknya kesalahan terkait izin, tetapi saya tidak dapat menemukan cara untuk memperbaikinya, ada saran?
sumber
sudo chmod -R g+w
lebih dari folder yang bersalah.mv
tindakan daripada hanya ditimpa.ls -l
layar menunjukkan jenis file dan tidak terkait dengan izin. Sembilan karakter tersisa dalam tiga set, masing-masing mewakili kelas izin sebagai tiga karakter. Set pertama mewakili kelas pengguna. Set kedua mewakili kelas grup. Set ketiga mewakili kelas yang lain. Theg+w
di chmod memberikan kelompok set (yangg
parameter) izin untuk menulis (denganw
parameter)Perintah ini akan memperbaiki masalah. Ini memberi izin menulis ke folder.
sumber
Jika Anda menggunakan IDE apa pun, kemungkinan besar masalahnya adalah file tersebut digunakan oleh beberapa proses. Seperti kucing jantan Anda mungkin menggunakan file. Cobalah untuk mengidentifikasi proses tertentu dan tutuplah. Itu seharusnya bisa menyelesaikan masalah Anda.
sumber
Saya memiliki masalah yang sama dan tidak ada solusi di atas yang berhasil untuk saya. Saya menghapus folder yang menyinggung itu. Kemudian:
Menghapus file yang tersisa untuk membersihkan status git, lalu lakukan:
Akhirnya berhasil.
CATATAN: Jika folder itu, misalnya, folder publik dengan file build, ingatlah untuk membangun kembali file
sumber
Saya pikir masalahnya mungkin dengan kepemilikan ke folder jadi setel ke kepemilikan pengguna saat ini
Anda dapat menemukan solusinya [di sini] [1]sumber
FWIW - Saya punya masalah yang sama dan saya tidak yakin apakah ini meringankannya (di luar izin mod): Menutup Eclipse yang menggunakan cabang dengan masalah ini.
sumber
Ini adalah pertanyaan lama, tetapi ini dapat membantu pengguna Mac.
Jika Anda menyalin file dari Time Machine secara manual, alih-alih mengembalikannya melalui Time Machine, itu akan menambahkan ACL ke semuanya, yang dapat mengacaukan izin Anda.
Misalnya, bagian dalam artikel ini yang mengatakan "Cara Memperbaiki Izin File Mac OS X" menunjukkan bahwa "semua orang" memiliki izin khusus, yang mengacaukan semuanya:
Anda perlu menghapus ACL dari direktori / file tersebut. Jawaban Pengguna Super ini masuk ke dalamnya, tapi inilah perintahnya:
sudo chmod -RN .
Kemudian Anda dapat memastikan direktori dan file Anda memiliki izin yang tepat. Saya gunakan
750
untuk direktori dan644
file.sumber
Saya mendapatkan kesalahan ini, dan kesalahan git aneh lainnya, ketika saya memiliki server yang berjalan (di Intellij). Menghentikan server dan mencoba ulang perintah git sering memperbaikinya untuk saya.
sumber
Bekerja untukku
sumber
Melakukan pekerjaan untuk saya.
sumber
Menarik mungkin telah menciptakan perubahan lokal.
Tambahkan file Anda yang tidak dilacak:
Stash berubah.
Jatuhkan perubahan lokal.
Tarik dengan izin sudo
sumber
Beberapa file terlindungi dari penulisan yang bahkan git tidak dapat menulisnya secara berlebihan. Ubah izin folder untuk memungkinkan penulisan misalnya sudo chmod 775 nama pengguna
Dan kemudian jalankan
lagi
sumber
Ingat juga untuk memeriksa izin direktori root itu sendiri!
Kamu mungkin menemukan:
dan kesalahan 'izin ditolak' akan muncul.
sumber