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.

Arthur Yakovlev
sumber
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

abyx
sumber
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/
René Höhle
sumber
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 
Won Jun Bae
sumber
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.

Johannes Thoma
sumber
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
24

Dalam kasus saya berfungsi dengan baik setelah itu:

rm -f .git/FETCH_HEAD

git branch -u
shilovk
sumber
1
Ini juga berhasil bagi saya dengan kasus khusus ini .
P. Mergey
Bagi saya, itu juga solusinya. Terima kasih atas opsi solusi ini.
Francisco Maria Calisto
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.

hal2286
sumber
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/
Selalu cerah
sumber
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.

sinar
sumber
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).

Nicholas Westby
sumber
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.

hobs
sumber
7

Tetapkan izin untuk pengguna Anda saat ini dengan menjalankan perintah

$ sudo chown -R <username> .git/

Shivam Kohli
sumber
6

Cukup buka folder root Anda dan jalankan perintah ini:

chmod a+rw .git/FETCH_HEAD
Suvajit Chakraborty
sumber
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.

jdf
sumber
Direktori tersembunyi, siapa yang akan dipecat.
Ian Newland
4

Ini akan menyelesaikan semua izin dalam folder

sudo chown -R $(whoami) ./
Pablo Papalardo
sumber
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. 🎉

eonist
sumber
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 ;)

Yuseferi
sumber
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.

Oleg Dmitriev
sumber
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
Shahbaz
sumber
1

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

Rob Bowman
sumber
1

Dalam kasus saya,

sudo chmod ug + wx .git -R

perintah ini berfungsi.

narwanimonish
sumber
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 .. !!

Nakshtra Pradhan
sumber
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 ...

Vince
sumber
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.

ysvet
sumber
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.

thebiggestlebowski
sumber
0

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

Harun
sumber
0

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

sudo chown -R $(whoami) $(brew --prefix)/*
Ron36
sumber
-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.

numan947
sumber
-1

Dalam kasus saya bekerja itu: Saya baru saja menulis sudosebelum perintah:

sudo npm run deploy
Андрей Пахомов
sumber