Попытка git pull с ошибкой: не удается открыть.git / FETCH HEAD: разрешение отказано

помогите мне пожалуйста, я пытаюсь запустить это на моем терминале:

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

помогите мне, я не понимаю этой проблемы.

17 ответов


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

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


проверьте, есть ли у вас достаточно разрешений на


это проблема разрешения UNIX. Не используйте sudo для клонирования репозитория. У вас нет тех же ключей ssh, что и root, и вы все равно не должны работать как root. Попробуйте ls-la найти разрешения на файлы и использовать chmod (или sudo chown), чтобы исправить их. Надеюсь, это поможет.


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

sudo chmod g+w .git -R

работал лучше всего для меня.


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

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

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


в моем случае отлично работают после этого:

rm -f .git/FETCH_HEAD

в моем случае, у меня был только на чтение .файл git/FETCH_HEAD. Я должен был сделать " sudo chmod g+w .git / FETCH_HEAD", чтобы иметь возможность выполнить запрос на вытягивание.


У меня была первая проблема (разрешение FETCH_HEAD отказано) в Windows.

я исправил это, запустив Git Bash как администратор (щелкните правой кнопкой мыши, запустите как администратор).


если вы не добавили себя в группу, которой принадлежит .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.


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

Шаг 1: сначала проверьте, кто вы? он вернет текущее имя пользователя e.g ubuntu

$ whoami 

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

sudo chown -R ubuntu .git/

запуск Windows 7, когда у меня была эта проблема, это было потому, что я скрыл .папка git. Разрешения были в порядке, они просто были скрыты. Показ папки разрешил его.


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

так в summeries

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

    $cd your path
    
  2. найти владельца группы .git директриса!--8-->

    $ll .git     
    
  3. добавьте пользователя в эту группу

    $usermod -a -G yourusername ownergroupofgit
    
  4. выход из системы и войти в систему, чтобы это изменение вступило в силу.

  5. наслаждайтесь ;)


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


Это сработало для меня:

  1. Правой Кнопкой Мыши .папку с Git
  2. нажмите кнопку "Информация"
  3. установить разрешение для вашего пользователя
  4. щелкните значок шестеренки и нажмите Применить к вложенным элементам

больше нет разрешений отказано в ошибках в git.


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

попробуйте оба решения, которые должны работать для вас

1- sudo chmod g+w .git -R

если это не работает, пожалуйста, попробуйте следующее решение, надеюсь, что это решит вашу проблему

2 - rm -f .git/FETCH_HEAD

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


У меня было это сообщение при использовании расширений git для windows. Мое исправление состояло в том, чтобы просто закрыть расширения git, а затем снова открыть как администратор