Попытка выполнить git pull с ошибкой: невозможно открыть .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
Есть ли у вас разрешение на запись в локальный каталог и файлы, куда вы пытаетесь сделать pull? Также, вероятно, sudoздесь не поможет, так как ему нужен доступ к вашим ssh-ключам (не root).
Бенджамин Баннье

У меня возникла эта проблема, и я решил ее, предоставив пользователю разрешения «Изменить и полный доступ» для этой папки (Windows)
Франк

Ответы:


193

Похоже, что первый не работает, потому что у вашего пользователя нет прав на изменение этого каталога, а второй, потому что у вашего пользователя root нет правильных ключей SSH для доступа к этому репозиторию git.

В зависимости от того, что вы пытаетесь сделать, может быть лучше клонировать репозиторий в другой каталог, или, возможно, chownтекущий каталог, чтобы иметь полный доступ для вашего пользователя


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

13
Это часто случается, когда вы случайно забываете, что бежали sudo suи играете в роли root в репо. Простой 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

Это кажется очень распространенной проблемой ... хорошо, если вы работаете с другим пользователем и с кем-то другим, вы изменили свои разрешения, это немного сложно.
Рене Хёле

Если chownне работает, то также выполните эту командуsudo chmod 0777 -R .git/
Киран

49

Если вы хотите дать разрешение группе,

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. Ответ заключается в том, чтобы принять соглашение, а затем клонировать без sudo.
Барнаби


21

Ответьте на этот вопрос и убедитесь, что у .git / FETCH_HEAD есть права на запись, и все будет готово.

У меня была эта проблема в Windows, и она была решена путем предоставления разрешений на запись.

В Unix можно запустить chmod a+rw .git/FETCH_HEADиз репозитория проекта, после чего он должен работать.


не работает в .git/FETCH_HEADодиночку, если проблема с разрешением включена .git.
Cœur

17

Попробуй так,

Шаг 1: Сначала проверь, кто ты? он вернет текущее имя пользователя, например, Ubuntu

$ whoami 

Шаг 2: Затем установите разрешение текущего пользователя, в этом случае, убунт по

sudo chown -R ubuntu .git/

Это работает для меня во время работы дискурсивной установки на Amazon убунту световой парус
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, затем выйдите из системы => login и все получится. ,

Итак, в летах

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

    $cd your path
    
  2. найти группу владельца .gitнаправления

    $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.