Mencoba git pull dengan kesalahan: tidak bisa membuka .git / FETCH_HEAD: Izin ditolak


209

Tolong bantu saya, saya mencoba menjalankan ini di terminal saya:

asgard@asgard-A7N8X2-0:~/CollegePortal$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied

Lalu saya coba yang ini

asgard@asgard-A7N8X2-0:~/CollegePortal$ sudo git pull
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Bantu saya, saya tidak mengerti masalah ini.


Sudahkah Anda menambahkan kunci publik ke akun github?
madhead

3
Apakah Anda memiliki izin menulis untuk direktori lokal & file tempat Anda mencoba melakukan penarikan? Juga, mungkin sudotidak membantu di sini sama sekali karena perlu akses ke Anda kunci ssh (bukan root).
Benjamin Bannier

Saya punya masalah ini dan menyelesaikannya dengan memberikan izin Modify & Full Access pengguna saya ke folder itu (Windows)
Frank

Jawaban:


193

Sepertinya yang pertama tidak berfungsi karena pengguna Anda tidak memiliki izin untuk mengubah direktori itu, dan yang kedua karena pengguna root Anda tidak memiliki kunci SSH yang tepat untuk mengakses repositori git itu.

Bergantung pada apa yang Anda coba lakukan, mungkin lebih baik untuk mengkloning repositori ke direktori yang berbeda, atau mungkin chowndirektori saat ini untuk memiliki akses penuh untuk pengguna Anda


Saya menghadapi masalah yang sama dan saya tidak yakin apakah saya dapat memberi www-datapengguna saya izin untuk memperbarui .gitdirektori. Saya memanggil skrip shell menggunakan php melalui http di browser. Detail di sini
KillABug

13
Ini sering terjadi ketika Anda secara tidak sengaja lupa bahwa Anda telah menjalankan sudo sudan bertindak sebagai root di repo. Sederhana sudo chown -R <username> .dalam direktori itu berfungsi ajaib!
Ray

149

Periksa apakah Anda memiliki cukup izin pada .git/direktori. Anda harus memiliki izin menulis. Anda dapat mengaturnya dengan perintah berikut.

Buka folder proyek Anda:

chown -R youruser:yourgroup .git/

1
Ini memberi sayachown: youruser: Invalid argument
zakdances

43
Itu haruschown -R youruser .git/
berbaur

1
Saya harus chown .git/dan folder induknya agar berfungsi
zadubz

Ini sepertinya masalah yang sangat umum .. ok jika Anda bekerja dengan pengguna yang berbeda dan dan sesuatu dari pengguna lain Anda telah mengubah izin Anda itu agak rumit.
René Höhle

Jika chowntidak berfungsi maka jalankan perintah inisudo chmod 0777 -R .git/
Kiran

49

Jika Anda ingin memberikan izin kepada grup,

sudo chmod g+w .git -R

bekerja paling baik untuk saya.

Untuk MacOS

sudo chmod -R g+w .git 

29

Ini adalah masalah izin UNIX. Jangan gunakan sudountuk kloning repositori. Anda tidak memiliki kunci ssh yang sama dengan root dan Anda tidak seharusnya bekerja sebagai root. Cobalah ls -launtuk menemukan izin pada file dan gunakan chmod(atau sudo chown) untuk memperbaikinya. Semoga itu bisa membantu.


Ini persis! Saya menemukan masalah ini karena saya harus melakukan sudo cloneuntuk menerima perjanjian lisensi baru XCode. Jawabannya adalah menerima perjanjian, lalu mengkloning tanpa sudo.
Barnaby


21

Jawaban untuk masalah ini memastikan .git / FETCH_HEAD memiliki hak istimewa menulis dan Anda akan siap.

Saya memiliki masalah ini pada Windows dan diselesaikan dengan memberikan izin menulis.

Dalam unix, seseorang dapat menjalankan chmod a+rw .git/FETCH_HEADdari repositori proyek setelah itu ia harus bekerja.


tidak bekerja dengan .git/FETCH_HEADsendirian jika masalah izin aktif .git.
Cœur

17

Coba seperti ini,

Langkah 1: Periksa dulu siapa Anda? itu akan mengembalikan nama pengguna saat ini misalnya ubuntu

$ whoami 

Langkah 2: Kemudian tetapkan izin untuk pengguna Anda saat ini, dalam hal ini, ubuntu oleh

sudo chown -R ubuntu .git/

ini berfungsi untuk saya saat menjalankan instalasi wacana di Amazon lightsail ubuntu
Jide

11

Dalam kasus saya, saya hanya memiliki akses baca ke file .git / FETCH_HEAD. Saya harus melakukan "sudo chmod g + w .git / FETCH_HEAD" agar dapat melakukan permintaan tarik.


tidak bekerja dengan .git/FETCH_HEADsendirian jika masalah izin aktif .git.
Cœur

Saya harus mengizinkan akses tulis ke folder git untuk grupsudo chmod g+w .git/FETCH_HEAD
William

sudo chmod g+w .git/FETCH_HEAD, solusi sempurna.
Rishi Kulshreshtha

9

Saya mengalami masalah pertama (izin FETCH_HEAD ditolak) di Windows.

Saya memperbaikinya dengan menjalankan Git Bash sebagai administrator (klik kanan, jalankan sebagai administrator).


9

Jika Anda belum menambahkan diri ke grup yang memiliki .git/, maka Anda harus.

sudo usermod -a -G $(stat -c '%G' .git) $USER
sudo chmod g+u .git -R
sudo chmod g+u .gitignore
su - $USER

Apa yang dilakukan:

  1. mengetahui grup mana yang memiliki .git/dan menambahkan pengguna Anda ke grup itu.
  2. memastikan anggota grup memiliki izin yang sama dengan pemiliknya .git/.
  3. ulangi ini untuk .gitignore, yang mungkin Anda butuhkan
  4. mencatat Anda dan kembali untuk menyegarkan kembali izin file keanggotaan grup Anda

Jika Anda baru saja melakukan sesuatu seperti ini (menambahkan diri Anda ke grup yang memiliki .git/), maka Anda harus keluar dan kembali sebelum Anda dapat menulis .git/FETCH_HEADselama git pull.


7

Tetapkan izin untuk pengguna Anda saat ini dengan menjalankan perintah

$ sudo chown -R <username> .git/



4

Menjalankan Windows 7, ketika saya mengalami masalah ini, itu karena saya telah menyembunyikan folder .git. Izinnya baik-baik saja, hanya disembunyikan. Menampilkan folder yang menyelesaikannya.


Direktori tersembunyi, siapa yang akan dipecat.
Ian Newland


3

Ini bekerja untuk saya:

  1. Klik kanan folder .git
  2. klik dapatkan info
  3. setel izin kepada pengguna Anda
  4. klik ikon Cog dan klik berlaku untuk item terlampir

Tidak ada lagi izin yang ditolak kesalahan dalam git. 🎉


2

Lihatlah pemilik dan grup .gitdirektori dengan (pertama masuk ke direktori induk .git) ll .git, lihat grup dan pemilik direktori, tambahkan pengguna Anda ke grup pemilik sudo usermod -a -G yourusername groupsofonwner, kemudian logout => login dan semuanya mulai berfungsi .

Jadi di musim panas

  1. buka direktori induk git

    $cd your path
    
  2. temukan pemilik grup dari .gitdirecotry

    $ll .git     
    
  3. tambahkan pengguna Anda ke grup itu

    $usermod -a -G yourusername ownergroupofgit
    
  4. Logout dan login ke sistem untuk perubahan ini mulai berlaku.

  5. Bersenang senang lah ;)


2

Punya masalah ketika folder .git disembunyikan dan semua file di dalamnya juga disembunyikan. Buat saja folder .git disembunyikan tanpa pembaruan file rekursif dan itu akan berfungsi.


2

Alasan kesalahan ini bisa jadi banyak tetapi dalam kasus saya saya memperbarui cabang dengan root kemudian ketika saya mencoba untuk memperbaruinya dengan pengguna normal itu memberi saya kesalahan.

cobalah kedua solusi yang harus bekerja untuk Anda

1- sudo chmod g+w .git -R

jika tidak berhasil silakan coba solusi berikutnya harap ini akan menyelesaikan masalah Anda

2 - rm -f .git/FETCH_HEAD

1

Saya mendapat pesan ini saat menggunakan ekstensi git untuk windows. Perbaikan saya adalah dengan hanya menutup ekstensi git lalu buka lagi sebagai administrator



1

Masalah ini muncul ketika Anda tidak memberikan izin yang cukup ke folder .git. Untuk mengatasi masalah ini-

  1. Navigasi pertama ke direktori kerja Anda.
  2. Masukkan perintah ini-

    sudo chmod a + rw .git -R

Semoga ini bisa membantu .. !!


1

Saya memiliki kesalahan yang sama persis tetapi dalam kasus saya, masalahnya adalah hasil dari membangun kembali Apache setelah upgrade ke versi PHP. Singkat cerita, saya lupa menginstal modul Apache 'suexec'.

Itu tidak ada hubungannya dengan kelompok atau kepemilikan. Hanya butuh dua hari untuk mencari tahu, seseorang menembakku ...


1

Dalam kasus saya, saya memiliki sistem dual-boot (Windows 10 dan Linux) dengan folder proyek pada disk NTFS. Ternyata pada pembaruan lain Windows 10 diaktifkan dengan sendirinya "startup cepat" dalam pengaturannya. Setelah saya hapus centang di Windows - "kesalahan: tidak bisa membuka .git / FETCH_HEAD: Izin ditolak" di Linux hilang.


0

Saya mendapatkan ini karena saya memiliki lebih dari 1 akun pengguna di kotak saya. Saya masuk sebagai pengguna A dan berada di direktori untuk pengguna B. Pengguna A tidak memiliki izin untuk barang-barang pengguna B. Begitu saya menyadari bahwa saya tidak berada di tempat yang saya kira berada dalam sistem file, kesalahan ini masuk akal.


0

jika Anda menemukan masalah yang sama di windows server, maka Anda perlu menjalankan baris perintah dengan izin yang cukup, seperti izin administrator.


0

untuk pengguna MacOS (jika High Sierra atau versi yang lebih tinggi) gunakan ini:

sudo chown -R $(whoami) $(brew --prefix)/*

-1

TL; DR: Dalam sistem Dual Boot, matikan Fast Startup untuk Windows

Saya mengalami masalah ini di sistem dual boot Ubuntu / Windows. Saya tidak bisa menulis apa pun di salah satu partisi yang dibagikan dengan Windows (partisi NTFS).

Saya baru-baru ini menginstal ulang keduanya dan lupa mematikan "Fast Startup" di Windows. Semuanya kembali normal setelah saya reboot di windows dan mematikan fitur itu dan restart lagi.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.