Намагання git тягнути з помилкою: не вдається відкрити .git / FETCH_HEAD: Дозвіл відхилено


209

Допоможіть, будь ласка, я намагаюся запустити це у своєму терміналі:

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

Тоді я спробую цю

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

Допоможіть мені, я не розумію цієї проблеми.


Ви додали свій відкритий ключ до облікового запису github?
божевілля

3
У вас є дозвіл на запис для локального каталогу та файлів, куди ви намагаєтеся зробити тягнути? Також, напевно sudo, тут взагалі не допомагає, оскільки йому потрібен доступ до вас ssh-ключів (а не кореневих).
Бенджамін Баньє

У мене була ця проблема і вирішено її, надавши моєму користувачеві дозволи на
Френк

Відповіді:


193

Здається, що перший не працює, оскільки ваш користувач не має дозволів на зміну цього каталогу, а другий тому, що ваш користувач root не має правильних ключів SSH для доступу до цього сховища git.

Залежно від того, що ви намагаєтеся зробити, може бути краще клонувати сховище в інший каталог, або, можливо, chownпоточний каталог мати повний доступ для вашого користувача


Я зіткнувся з подібною проблемою, і я не впевнений, чи можу я дати своєму www-dataкористувачеві дозвіл на оновлення .gitкаталогу. Я викликаю скрипт оболонки за допомогою php через http у браузері. Деталі тут
KillABug

13
Це часто трапляється, коли ти випадково забуваєш, що ти запустився, sudo suі ти виступаєш як корінь у репо. Простий sudo chown -R <username> .у цьому каталозі працює магією!
Рей

149

Перевірте, чи є у вас достатньо дозволів у .git/каталозі. Ви повинні мати дозволи на запис. Ви можете встановити їх за допомогою наступної команди.

Перейдіть до папки проекту:

chown -R youruser:yourgroup .git/

1
Це дає меніchown: youruser: Invalid argument
zakdances

43
Це має бутиchown -R youruser .git/
суміш

1
Мені довелося chown .git/і його батьківська папка, щоб вона працювала
zadubz

Це здається дуже поширеною проблемою. Добре, якщо ви працюєте з іншим користувачем, і щось від іншого користувача ви змінили свої дозволи на це трохи хитро.
René Höhle

Якщо chownне працює, також виконайте цю командуsudo chmod 0777 -R .git/
Кіран

48

Якщо ви хочете надати дозвіл групі,

sudo chmod g+w .git -R

найкраще працював для мене.

Для MacOS

sudo chmod -R g+w .git 

29

Це проблема з дозволом UNIX. Не використовуйте sudoдля клонування сховища. У вас немає тих самих ключів ssh, що і root, і ви не повинні працювати як root. Спробуйте ls -laзнайти дозволи на файли та скористайтеся chmod(або sudo chown) для їх виправлення. Сподіваюся, що це допомагає.


Саме це! Я зіткнувся з цією проблемою, тому що мені довелося це зробити sudo clone, щоб прийняти новий ліцензійний договір XCode. Відповідь полягає в тому, щоб прийняти угоду, потім клонуватись без судо.
Барнабі


21

У відповідь на це питання переконайтеся, що .git / FETCH_HEAD має права доступу, і ви все будете налаштовані.

У мене виникла ця проблема в Windows, і вона була вирішена шляхом надання дозволу на запис.

У unix можна запустити chmod a+rw .git/FETCH_HEADз сховища проектів, після чого він повинен працювати.


не працює з .git/FETCH_HEADокремими, якщо ввімкнено проблему дозволу .git.
Cœur

17

Спробуйте так,

Крок 1. Спершу перевірте, хто ви є? він поверне поточне ім'я користувача, наприклад, ubuntu

$ whoami 

Крок 2: Потім встановіть дозвіл вашому поточному користувачеві, у цьому випадку, ubuntu by

sudo chown -R ubuntu .git/

для мене це працює під час встановлення дискурсу на Amazon lightsail ubuntu
Jide,

11

У моєму випадку я мав доступ лише до читання до файлу .git / FETCH_HEAD. Мені довелося зробити "sudo chmod g + w .git / FETCH_HEAD", щоб мати змогу зробити запит на тягу.


не працює з .git/FETCH_HEADокремими, якщо ввімкнено проблему дозволу .git.
Cœur

Мені довелося дозволити записати доступ до папки git для групиsudo chmod g+w .git/FETCH_HEAD
Вільям

sudo chmod g+w .git/FETCH_HEAD, ідеальне рішення.
Ріші

9

У мене був перший випуск (FETCH_HEAD у дозволі відмовлено) у Windows.

Я виправив це, запустивши Git Bash як адміністратор (клацніть правою кнопкою миші, запустити як адміністратор).


9

Якщо ви ще не додали себе до групи, яка є власником .git/, то слід.

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

Що це робить:

  1. з'ясовує, якій групі належить .git/ та додає вашого користувача до цієї групи.
  2. гарантує, що члени групи мають ті ж дозволи, що й власник .git/.
  3. повторює це, для .gitignoreчого, ймовірно, вам знадобиться
  4. виходить із системи та повертається назад, щоб оновити дозволи вашого файлу членства в групі

Якщо ви нещодавно зробили щось подібне (додали себе до групи, яка є власником .git/), тоді вам потрібно вийти з системи та знову увійти до того, як ви зможете писати .git/FETCH_HEADпід час свого git pull.


7

Встановіть дозвіл поточному користувачеві, запустивши команду

$ sudo chown -R <username> .git/



4

Запуск ОС Windows 7, коли у мене виникла ця проблема, це було тому, що я приховав папку .git. Дозволи були прекрасні, це було просто приховано. Показ папки вирішив її.


Прихований каталог, хто хотів би заграти.
Ян Ньюленд


3

Це працювало для мене:

  1. Клацніть правою кнопкою миші папку .git
  2. натисніть отримати інформацію
  3. встановити дозвіл для вашого користувача
  4. клацніть піктограму Cog і натисніть застосувати до вкладених елементів

Більше дозволу не було відмовлено у помилках у git. 🎉


2

Подивіться на власника та групу .gitкаталогів (спочатку перейдіть у батьківський каталог .git) ll .git, подивіться на групу та власника каталогу, додайте свого користувача до групи власника sudo usermod -a -G yourusername groupsofonwner, потім вийдіть => увійдіть у систему та все, що працює .

Так в літні роки

  1. перейти до батьківського каталогу git

    $cd your path
    
  2. знайти власника групи .gitdirecotry

    $ll .git     
    
  3. додати свого користувача до цієї групи

    $usermod -a -G yourusername ownergroupofgit
    
  4. Вихід із системи та вхід у систему для цієї зміни набувають чинності.

  5. Насолоджуйся цим ;)


2

З'явилося це питання, коли папка .git прихована і всі файли в ній теж приховані. Зробити лише папку .git прихованою без рекурсивного оновлення файлів, і вона буде працювати.


2

Причини цієї помилки можуть бути кратними, але в моєму випадку я оновив гілку з root, то коли я намагався оновити її до звичайного користувача, вона дає мені помилку.

спробуйте обидва рішення, одне повинно працювати для вас

1- sudo chmod g+w .git -R

якщо це не працює, спробуйте наступне рішення, сподівайтеся, що воно вирішить вашу проблему

2 - rm -f .git/FETCH_HEAD

1

У мене було це повідомлення при використанні розширень git для Windows. Моє виправлення полягало в тому, щоб просто закрити розширення git і знову відкрити його як адміністратор



1

Ця проблема виникає, коли ви не даєте достатнього дозволу на папку .git. Щоб вирішити цю проблему,

  1. Спочатку перейдіть до свого робочого каталогу.
  2. Введіть цю команду-

    sudo chmod a + rw .git -R

Сподіваюся, це допомагає .. !!


1

У мене була така ж помилка, але в моєму випадку проблема була наслідком того, що я відновив Apache після оновлення до версії PHP. Коротше кажучи, я забув встановити модуль Apache 'suexec'.

Це не мало нічого спільного з групою чи власністю. На це знадобилося лише два дні, щоб хтось розстріляти ...


1

У моєму випадку у мене була система з подвійним завантаженням (Windows 10 та Linux) з папкою проекту на диску NTFS. Виявилося, що в іншому оновлення Windows 10 включив сам "швидкий запуск" у своїх налаштуваннях. Після того, як я скасував це в Windows, - "помилка: не вдається відкрити .git / FETCH_HEAD: Дозвіл відхилено" в Linux не було.


0

Я отримав це, тому що в мене було більше 1 облікового запису користувача. Я ввійшов як користувач A і знаходився в каталозі для користувача B. Користувач A не мав дозволу на речі користувача B. Як тільки я зрозумів, що я не там, де я вважав, що я перебуваю у файловій системі, ця помилка мала сенс.


0

якщо ви знайдете таку ж проблему на сервері Windows, тоді вам потрібно запустити командний рядок з достатньою дозволом, наприклад дозволом адміністратора.


0

для користувачів MacOS (якщо High Sierra або вищої версії) використовуйте це:

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

-1

TL; DR: У системах подвійного завантаження вимкніть швидкий запуск для Windows

У мене виникло це питання в моїй системі подвійного завантаження Ubuntu / Windows. Я не міг нічого написати в жодний з розділів, якими спільно користуватися Windows (розділи NTFS).

Нещодавно я перевстановив обоє і забув перетворити "Швидкий запуск" у Windows. Все повернулося до норми після того, як я перезавантажився у Windows і вимкнув цю функцію та знову перезапустив.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.