Saya mendapatkan kembali kesalahan yang tidak biasa saat mencoba melakukan "git push" ke repositori GitHub saya:
Menghitung objek: 8, selesai. Kompresi delta menggunakan 2 utas. Mengompresi objek: 100% (4/4), selesai. Objek penulisan: 100% (5/5), 1,37 KiB, selesai. Total 5 (delta 2), digunakan kembali 0 (delta 0) error: izin tidak cukup untuk menambahkan objek ke database repositori ./objects fatal: gagal menulis objek error: unpack-objek keluar dengan kode kesalahan 128 error: unpack gagal: unpack-benda keluar tidak normal Ke [email protected]: bixo / bixo.git ! master [ditolak jauh] -> master (n / a (kesalahan pembongkar paket)) galat: gagal mendorong beberapa referensi ke '[email protected]: bixo / bixo.git'
- Setelah klon bersih dari GitHub, saya dapat mengedit / menambah / komit / mendorong file yang dimodifikasi.
- Jika saya ulangi ini untuk kedua kalinya saya mendapatkan kesalahan di atas.
- Saya bisa mendorong repositori GitHub lainnya dengan baik.
- Saya telah memeriksa izin file / direktori di pihak saya, dan tampaknya OK.
- Saya menjalankan git 1.6.2.3 di Mac OS X 10.5.8
Repositori di atas adalah sumber kesenangan saya untuk pertanyaan Stack Overflow sebelumnya ( SO 1904860 ), jadi mungkin repo GitHub rusak. Satu-satunya masalah serupa yang saya temukan melalui pencarian adalah masalah gagal yang dilaporkan pada github. Adakah orang lain yang mengalami masalah ini sebelumnya, terutama saat tidak menggunakan GitHub?
foo
dangit
; keduanya bisa membaca/opt/git/<repo>
, tetapi hanyagit
bisa menulis untuk itu.git
default untuk pengguna saat ini jika tidak ada yang diberikan.git/config
, yang saya lupa. Tidak ada jawaban rumit di bawah ini yang diperlukan.Jawaban:
Saat Anda melihat kesalahan ini di luar github, inilah obatnya.
Dapatkan ini dari: http://mapopa.blogspot.com/2009/10/git-insufficient-permission-for-adding.html
Setelah ini, daemon git harus menggunakan izin file grup saat menulis ke .git / objek.
sumber
sudo chmod -R g+ws *
?git config core.sharedRepository true
.Biasanya masalah ini disebabkan oleh izin pengguna dan grup yang salah pada sistem file server Git Anda. Repositori git harus dimiliki oleh pengguna dan juga grupnya.
Contoh:
Jika pengguna Anda disebut "git", grupnya "gitgroup", dan lokasi repo Git adalah: [email protected]: path / to / repo.git
lalu lakukan:
Ini memperbaiki kesalahan izin git tidak mencukupi bagi saya.
sumber
sumber
chmod 777
tidak pernah merupakan solusi yang baik, hanya solusi yang tidak aman. Coba sebagai jawaban @ Syvex sebagai gantinya (dengan setgid)Ini terjadi pada saya ketika saya mencoba
git pull
. Beberapa analisis menunjukkan bahwa seseorang telah melakukan root di masa lalu, sehingga menciptakan beberapa objek dengan kepemilikan root di dalamnya.git/objects
.Jadi saya berlari
dan itu menunjukkan
root
kepemilikan untuk beberapa objek (direktori) seperti ini:Lalu aku berlari
dan itu berhasil!
Saya mengganti pengguna dengan pengguna asli saya, tentu saja.
sumber
Tidak ada yang di atas bekerja untuk saya. Beberapa jam kemudian saya menemukan alasan untuk masalah ini: Saya menggunakan jenis repo dari jenis itu
Sayangnya saya menyimpan sesi dempul dengan nama
example.com
yang dikonfigurasi untuk masuk sebagai penggunamyOtherUser
.Jadi, sementara saya pikir git terhubung ke host
example.com
dengan 'git' Pengguna, Git / TortoiseGit telah terhubung ke sesi dempulexample.com
yang menggunakan PenggunamyOtherUser
. Ini mengarah ke hal yang sama persis..insufficient permission..
kesalahan yang (karena kedua pengguna berada dalam grup yang berbeda).Solusi: Ubah nama sesi dempul
example.com
menjadi[email protected]
sumber
chmod harus chown, jadi baris yang benar adalah:
sumber
Anehnya, saya memiliki masalah ini pada satu klon dari repo yang saya miliki, tetapi tidak pada yang lain. Selain mengkloning ulang repo (yang dilakukan rekan kerja untuk berhasil mengatasi masalah ini), saya berhasil melakukan "git reset" ke komit yang saya miliki sebelum kegagalan dimulai. Kemudian saya kembali melakukan perubahan, dan saya berhasil mendorong setelah itu. Jadi terlepas dari semua indikasi ada masalah pada server, dalam hal ini tampaknya merupakan indikasi beberapa keanehan dalam repo lokal.
sumber
Saya mendapatkan kesalahan ini karena setiap kali pengguna mendorong beberapa konten, grup file berubah menjadi pengguna. Dan kemudian jika beberapa pengguna lain mencoba mendorong ke dalam repositori, itu menyebabkan kesalahan izin dan push ditolak. Jadi, seseorang perlu meminta sysadmin Anda untuk mengubah pengaturan repositori sehingga grup file apa pun di repositori tidak diubah untuk dorongan apa pun oleh pengguna mana pun.
Untuk menghindari masalah seperti itu, harap pastikan bahwa ketika Anda menginisialisasi repositori git Anda, gunakan perintah "git init - shared = group".
sumber
Jika Anda masih mendapatkan kesalahan ini nanti setelah mengatur izin Anda mungkin perlu memodifikasi topeng kreasi Anda. Kami menemukan komit baru kami (folder di bawah objek) masih sedang dibuat tanpa izin menulis grup, oleh karena itu hanya orang yang melakukannya dapat mendorong ke dalam repositori.
Kami memperbaikinya dengan mengatur umask pengguna SSH ke 002 dengan grup yang sesuai dibagikan oleh semua pengguna.
misalnya
di mana 0 tengah memungkinkan grup menulis secara default.
sumber
Setelah Anda menambahkan beberapa hal ... komit dan setelah semua selesai dorong! BANG !! Mulai semua masalah ... Seperti yang seharusnya Anda perhatikan ada beberapa perbedaan dalam cara proyek baru dan yang ada didefinisikan. Jika beberapa orang mencoba untuk menambah / melakukan / mendorong file yang sama, atau konten (git menyimpan keduanya sebagai objek yang sama), kita akan menghadapi kesalahan berikut:
Untuk mengatasi masalah ini, Anda harus memiliki sesuatu dalam sistem izin sistem operasional karena Anda dibatasi olehnya dalam hal ini. Tu mengerti lebih baik masalahnya, silakan dan periksa folder objek git Anda (.git / objek). Anda mungkin akan melihat sesuatu seperti itu:
* Perhatikan bahwa izin file-file itu diberikan hanya untuk pengguna Anda, tidak ada yang tidak akan pernah bisa mengubahnya ... *
MEMECAHKAN MASALAH
Jika Anda memiliki izin pengguna super, Anda dapat maju dan mengubah semua izin sendiri menggunakan langkah dua, dalam hal lain apa pun Anda perlu bertanya semua pengguna dengan objek yang dibuat dengan pengguna mereka, gunakan perintah berikut untuk mengetahui siapa mereka. :
Sekarang Anda dan semua pengguna pemilik file harus mengubah izin file-file itu, melakukan:
Setelah itu, Anda perlu menambahkan properti baru yang setara dengan - shared = grup yang dilakukan untuk repositori baru, sesuai dengan dokumentasi, ini membuat repositori dapat ditulisi oleh grup, lakukan mengeksekusi:
https://coderwall.com/p/8b3ksg
sumber
Coba lakukan hal berikut:
Pergi ke Server Anda
Lalu pergi ke copy pekerjaan Anda (repositori lokal) dan bungkus kembali oleh
git repack master
Bekerja dengan baik untuk saya.
sumber
Anda bisa menggunakan ini
sumber
Dir adalah repo git Anda.
Kemudian lakukan:
Anda akan melihat perubahan tentang komitmen oleh orang lain.
sumber
sumber
OK - ternyata itu adalah masalah izin pada GitHub yang terjadi selama garpu emi / bixo ke bixo / bixo. Setelah Tekkub memperbaiki ini, mulai bekerja lagi.
sumber
Karena kesalahan berkaitan dengan izin pada folder objek, saya melakukan chown langsung pada folder objek dan itu berhasil untuk saya.
sumber
Ini bekerja:
sumber
chmod
Mengubah izin file dan mode kebutuhan sebagai argumen, bukan pengguna dan grup. Entah ituchmod -R ${some_octal_num} bla
atauchown -R ${some_user}:${some_group} bla
Saya kira banyak seperti saya berakhir di forum seperti ini ketika masalah git seperti yang dijelaskan di atas terjadi. Namun, ada begitu banyak penyebab yang dapat menyebabkan masalah sehingga saya hanya ingin berbagi apa yang menyebabkan masalah saya bagi orang lain untuk belajar karena saya sudah belajar dari atas.
Saya memiliki repo saya di Linux NAS dari sitecom (Jangan pernah membeli NAS dari Sitecom, pleeaaase). Saya memiliki repo di sini yang dikloning pada banyak komputer tetapi saya tiba-tiba ditolak untuk melakukannya. Baru-baru ini saya menginstal sebuah plugin sehingga NAS saya dapat berdiri sebagai server squeezebox.
Server ini memindai media untuk dibagikan. Apa yang saya tidak tahu adalah bahwa, mungkin karena bug, server mengubah pengaturan pengguna dan grup untuk memeras: pengguna untuk semua file yang dilihat. Dan itu SEMUA file. Dengan demikian mengubah hak saya harus mendorong.
Server hilang dan pengaturan hak yang benar dibangun kembali dan semuanya berfungsi dengan baik.
Saya menggunakan
Di mana myuser dan mygroup tentunya harus diganti dengan pengaturan yang tepat untuk sistem Anda. coba git: git atau gituser: gituser atau yang lain yang mungkin Anda sukai.,
sumber
Periksa repositori: $ git remote -v
Perhatikan bahwa ada substring 'git @' di sini, ia memerintahkan git untuk mengotentikasi sebagai nama pengguna 'git' pada server jarak jauh. Jika Anda menghilangkan baris ini, git akan mengotentikasi dengan nama pengguna yang berbeda, maka kesalahan ini akan terjadi.
sumber
Dalam kasus saya, tidak ada otentikasi terpadu (mis. Dalam layanan domain + AD-like) antara mesin saya dan server virtual git. Oleh karena itu, pengguna dan grup git bersifat lokal untuk server virtual. Dalam kasus saya, pengguna jarak jauh saya (yang saya gunakan untuk masuk ke server jarak jauh) tidak ditambahkan ke grup remote git.
Setelah itu periksa izin seperti yang dijelaskan dalam posting di atas ...
sumber
Sudahkah Anda mencoba sudo git push -u origin --all ? Terkadang itu satu-satunya hal yang Anda butuhkan untuk menghindari masalah ini. Ia meminta Anda untuk kata sandi sistem admin - yang Anda bisa masuk ke mesin Anda -, dan itulah yang perlu Anda tekan - atau komit, jika itu masalahnya.
sumber