Я получаю сообщение об необычной ошибке при попытке выполнить "git push" в моем репозитории GitHub:
Подсчет объектов: 8, готово. Дельта-сжатие с использованием 2 потоков. Сжатие объектов: 100% (4/4), готово. Написание объектов: 100% (5/5), 1,37 Кбайт, готово. Всего 5 (дельта 2), повторно используется 0 (дельта 0) ошибка: недостаточно прав для добавления объекта в базу данных репозитория ./objects фатальный: не удалось записать объект ошибка: распаковка-объекты завершились с кодом ошибки 128 ошибка: ошибка распаковки: сбой при распаковке объектов Кому git@github.com: bixo / bixo.git ! [удаленное отклонение] мастер -> мастер (н / д (ошибка распаковщика)) ошибка: не удалось отправить некоторые ссылки на 'git@github.com: bixo / bixo.git'
- После чистого клона из GitHub я могу редактировать / добавлять / фиксировать / отправлять измененный файл.
- Если я повторю это во второй раз, я получу указанную выше ошибку.
- Я могу просто нажать на другие репозитории GitHub.
- Я проверил права доступа к файлам / каталогам на своей стороне, и они кажутся нормальными.
- Я запускаю git 1.6.2.3 в Mac OS X 10.5.8
Вышеупомянутый репозиторий был источником моего удовольствия для предыдущего вопроса о переполнении стека ( SO 1904860 ), поэтому, возможно, репозиторий GitHub был поврежден. Единственная похожая проблема, которую я обнаружил при поиске, - это проблема с ошибкой при распаковке, о которой сообщалось на github. Кто-нибудь еще сталкивался с этой проблемой раньше, особенно когда не использует GitHub?
foo
иgit
; оба могут читать/opt/git/<repo>
, ноgit
могут только писать в него.git
по умолчанию используется текущий пользователь, если ничего не указано.git/config
, о чем я забыл. Ни один из приведенных ниже подробных ответов не потребовался.Ответы:
Если вы видите эту ошибку за пределами github, вот решение.
Получил из: http://mapopa.blogspot.com/2009/10/git-insufficient-permission-for-adding.html
После этого демон git должен использовать права доступа к групповому файлу при записи в .git / objects.
источник
sudo chmod -R g+ws *
?git config core.sharedRepository true
.Обычно эта проблема вызвана неправильными правами пользователя и группы в файловой системе сервера Git. Репозиторий git должен принадлежать пользователю, а также его группе.
Пример:
Если ваш пользователь называется «git», его группа «gitgroup» и расположение репозитория Git: git@mygitserverxyz.com: путь / к / repo.git
затем выполните:
Это исправило ошибку недостаточного разрешения git для меня.
источник
источник
chmod 777
никогда не бывает хорошим решением, это просто небезопасный обходной путь. Попробуйте вместо этого ответ @Syvex (с setgid)Это случилось со мной, когда я попытался
git pull
. Некоторый анализ показал, что кто-то в прошлом совершал коммит с root-правами, тем самым создавая объекты с root-правами в.git/objects
.Так что я побежал
и это показывает
root
право собственности на некоторые объекты (каталоги), например:Затем я побежал
и это сработало!
Конечно, я заменял пользователя моим настоящим пользователем.
источник
Ничего из вышеперечисленного у меня не сработало. Через пару часов я нашел причину проблемы: я использовал URL-адрес репо типа
К сожалению, я сохранил сеанс замазки с именем,
example.com
настроенным для входа в систему как пользовательmyOtherUser
.Итак, хотя я думал, что git подключается к хосту
example.com
с помощью пользователя git, Git / TortoiseGit подключился к сеансу замазки,example.com
который использует UsermyOtherUser
. Это приводит к одной и той же..insufficient permission..
ошибке (потому что оба пользователя находятся в разных группах).Решение: переименуйте сеанс шпатлевки
example.com
наmyOtherUse@example.com
источник
chmod должен быть chown, поэтому правильная строка:
источник
Как ни странно, у меня была эта проблема на одном клоне репо, который у меня был, но не на другом. Помимо повторного клонирования репозитория (что сделал мой коллега, чтобы успешно обойти эту проблему), мне удалось выполнить «git reset» для фиксации, которая была у меня до начала сбоев. Затем я повторно зафиксировал изменения, и после этого смог успешно продвинуться. Таким образом, несмотря на все признаки, что на сервере была проблема, в данном случае, очевидно, это указывало на некоторую странность в локальном репо.
источник
Я получал эту ошибку, потому что каждый раз, когда пользователь нажимал какой-либо контент, группа файла менялась на пользователя. А затем, если какой-либо другой пользователь пытался выполнить загрузку в репозиторий, это вызывало ошибку разрешения, и отправка была отклонена. Таким образом, нужно попросить вашего системного администратора изменить настройки репозитория, чтобы группа любого файла в репозитории не изменялась ни при каком нажатии любым пользователем.
Чтобы избежать такой проблемы, убедитесь, что при инициализации репозитория git используйте команду «git init --shared = group».
источник
Если вы по-прежнему получаете эту ошибку позже, после установки разрешений, вам может потребоваться изменить маску создания. Мы обнаружили, что наши новые коммиты (папки под объектами) все еще создаются без разрешения на запись для группы, поэтому только тот, кто их совершил, может отправить их в репозиторий.
Мы исправили это, установив umask пользователей SSH на 002 с соответствующей группой, общей для всех пользователей.
например
где средний 0 по умолчанию разрешает групповую запись.
источник
После того, как вы добавите что-то ... зафиксируйте их и после того, как все закончите, нажмите! BANG !! Начать все проблемы ... Как вы могли заметить, есть некоторые различия в способах определения как новых, так и существующих проектов. Если кто-то другой попытается добавить / зафиксировать / протолкнуть те же файлы или контент (git сохраняет оба как те же объекты), мы столкнемся со следующей ошибкой:
Чтобы решить эту проблему, вы должны иметь в виду систему разрешений операционной системы, поскольку в этом случае вы ограничены ею. Чтобы лучше понять проблему, проверьте папку с объектами git (.git / objects). Вероятно, вы увидите что-то подобное:
* Обратите внимание, что права доступа к этим файлам были предоставлены только вашим пользователям, никто никогда не сможет их изменить ... *
РЕШЕНИЕ ПРОБЛЕМЫ
Если у вас есть разрешение суперпользователя, вы можете пойти дальше и изменить все разрешения самостоятельно, используя второй шаг, в любом другом случае вам нужно будет спросить всех пользователей с объектами, созданными с их пользователями, используйте следующую команду, чтобы узнать, кто они :
Теперь вам и всем пользователям-владельцам файлов придется изменить права доступа к этим файлам, выполнив:
После этого вам нужно будет добавить новое свойство, которое эквивалентно --shared = group done для нового репозитория, согласно документации, это сделает группу репозитория доступной для записи, сделайте это, выполнив:
https://coderwall.com/p/8b3ksg
источник
Попробуйте сделать следующее:
Зайдите на свой сервер
Затем перейдите в свою рабочую копию (локальный репозиторий) и перепакуйте ее
git repack master
У меня отлично работает.
источник
вы можете использовать это
источник
Каталог - это ваш репозиторий git.
Затем сделайте:
Вы увидите изменения в коммитах других пользователей.
источник
источник
Хорошо - оказывается, это была проблема с разрешениями на GitHub, которая произошла во время вилки emi / bixo на bixo / bixo. Как только Tekkub исправил их, он снова заработал.
источник
Поскольку ошибка связана с разрешениями на папку объектов, я сделал chown непосредственно на папке объектов, и у меня это сработало.
источник
Это работает:
источник
chmod
Изменяет права доступа к файлам и требует режимов в качестве аргументов, а не пользователей и групп. Это либо,chmod -R ${some_octal_num} bla
либоchown -R ${some_user}:${some_group} bla
Думаю, многие вроде меня попадают на подобные форумы, когда возникает описанная выше проблема с git. Однако существует так много причин, которые могут привести к проблеме, что я просто хочу поделиться своими проблемами, чтобы другие узнали, как я уже узнал из вышеизложенного.
У меня есть репозитории на Linux NAS от sitecom (никогда не покупайте NAS от Sitecom, пожалуйста). У меня есть репо, которое клонировано на многих компьютерах, но мне внезапно отказали в отправке. Недавно я установил плагин, чтобы мой NAS мог работать как сервер squeezebox.
Этот сервер сканирует мультимедиа для совместного использования. Чего я не знал, так это того, что, возможно, из-за ошибки, сервер меняет настройки пользователя и группы на squeeze: user для всех файлов, которые он просматривает. И это ВСЕ файлы. Таким образом, изменив права, мне пришлось подтолкнуть.
Сервер ушел, правильные настройки прав были восстановлены, и все работает отлично.
я использовал
Если myuser и mygroup off course должны быть заменены правильными настройками для вашей системы. попробуйте git: git или gituser: gituser или что-нибудь еще, что вам может понравиться.,
источник
Проверьте репозиторий: $ git remote -v
Обратите внимание, что здесь есть подстрока 'git @', она инструктирует git аутентифицироваться как имя пользователя 'git' на удаленном сервере. Если вы опустите эту строку, git будет аутентифицироваться под другим именем пользователя, поэтому возникнет эта ошибка.
источник
В моем случае между моей машиной и виртуальным сервером git не было единой аутентификации (например, в домене + AD-подобной службе). Поэтому пользователи и группа git являются локальными для виртуального сервера. В моем случае мой удаленный пользователь (который я использую для входа на удаленный сервер) просто не был добавлен в удаленную группу git.
После этого проверьте разрешения, как описано в сообщениях выше ...
источник
Вы пробовали sudo git push -u origin --all ? Иногда это единственное, что нужно, чтобы избежать этой проблемы. Он запрашивает у вас системный пароль администратора - тот, который вы можете сделать для входа на свой компьютер - и это то, что вам нужно нажать - или зафиксировать, если это так.
источник