GitHub로 푸시 오류-저장소 데이터베이스에 객체를 추가 할 수있는 권한이 없습니다 내 GitHub 리포지토리에

내 GitHub 리포지토리에 “git push”를 시도하는 동안 비정상적인 오류가 발생합니다.

계산 개체 : 8, 완료.
2 개의 스레드를 사용한 델타 압축.
압축 객체 : 100 % (4/4) 완료
객체 쓰기 : 100 % (5/5), 1.37 KiB, 완료
총 5 (델타 2), 재사용 된 0 (델타 0)
오류 : 저장소 데이터베이스에 개체를 추가 할 수있는 권한이 없습니다.

치명적 : 개체를 쓰지 못했습니다.
오류 : unpack-objects가 오류 코드 128과 함께 종료되었습니다
오류 : 포장 풀기 실패 : 포장 풀기 비정상 종료
git@github.com으로 : bixo / bixo.git
 ! [원격 거부 됨] master-> master (해당 패키지 없음 오류)
오류 : 일부 심판을 'git@github.com : bixo / bixo.git'으로 푸시하지 못했습니다.
  • GitHub에서 클린 클론을 수행 한 후 수정 된 파일을 편집 / 추가 / 커밋 / 푸시 할 수 있습니다.
  • 그런 다음 이것을 두 번 반복하면 위의 오류가 발생합니다.
  • 다른 GitHub 리포지토리로 잘 밀어 넣을 수 있습니다.
  • 내 파일 / 디렉토리 권한을 확인했는데 문제가없는 것 같습니다.
  • Mac OS X 10.5.8에서 git 1.6.2.3을 실행 중입니다.

위의 저장소는 이전 스택 오버플로 질문 ( SO 1904860 )의 재미의 원천 이므로 GitHub 저장소가 손상 되었을 수 있습니다. 검색을 통해 찾은 유일한 유사한 문제는 github에서보고 된 압축 풀기 문제 였습니다 . 특히 GitHub를 사용 하지 않을 때 다른 사람이이 문제 를 겪은 적이 있습니까?



답변

github 외부 에서이 오류가 표시되면 해결 방법이 있습니다.

http://mapopa.blogspot.com/2009/10/git-insufficient-permission-for-adding.html 에서 가져 왔습니다.

ssh me@myserver
cd repository/.git

sudo chmod -R g+ws *
sudo chgrp -R mygroup *

git config core.sharedRepository true

그런 다음 git 데몬은 .git / objects에 쓸 때 그룹 파일 권한을 사용해야합니다.


답변

일반적으로이 문제는 Git 서버 파일 시스템에 대한 잘못된 사용자 및 그룹 권한으로 인해 발생합니다. 자식 저장소는 사용자와 그의 그룹이 소유해야합니다.

예:

사용자가 “git”, 그룹 “gitgroup”및 Git 리포지토리의 위치는 git@mygitserverxyz.com : path / to / repo.git입니다.

그런 다음 :

sudo chown -R git : gitgroup 경로 /to/repo.git/

이것은 git 불충분 한 권한 오류를 수정했습니다.


답변

sudo chmod 777 -R .git/objects

답변

내가하려고 할 때 이런 일이 일어났다 git pull. 일부 분석에 따르면 누군가 과거에 루트로 커밋하여에 루트 소유권이있는 개체를 만들었습니다 .git/objects.

그래서 나는 달렸다

cd <repo>
la .git/objects/

그리고 root이것은 다음과 같은 일부 객체 (디렉토리)에 대한 소유권을 보여주었습니다 .

user@host:/repo> la .git/objects/
total 540
drwxr-xr-x 135 user user 4096 Jun 16 16:29 .
drwxr-xr-x   8 user user 4096 Jun 16 16:33 ..
drwxr-xr-x   2 user user 4096 Mar  1 17:28 01
drwxr-xr-x   2 user user 4096 Mar  1 17:28 02
drwxr-xr-x   2 user user 4096 Jun 16 16:27 03
drwxr-xr-x   2 user user 4096 Mar  3 13:22 04
drwxr-xr-x   2 root root 4096 Jun 16 16:29 05
drwxr-xr-x   2 user user 4096 Jun 16 16:28 07
drwxr-xr-x   2 root root 4096 Jun 16 16:29 08

그런 다음 나는 달렸다

sudo chown -R user:user .git/objects/

그리고 그것은 효과가 있었다!

나는 대체 된 사용자 물론, 내 진짜 사용자와.


답변

위의 어느 것도 나를 위해 일하지 않았습니다. 몇 시간 후에 문제의 원인을 발견했습니다. 유형의 저장소 URL을 사용했습니다.

ssh://git@example.com/~git/repo.git

불행히도 나는 example.comuser로 로그인하도록 구성된 이름의 퍼티 세션을 저장했습니다 myOtherUser.

따라서 git example.com이 User ‘git’ 을 사용하여 호스트에 연결한다고 생각했지만 Git / TortoiseGit은 example.comUser를 사용하는 퍼티 세션에 연결했습니다 myOtherUser. 이로 ..insufficient permission..인해 동일한 오류가 발생합니다 (두 사용자가 서로 다른 그룹에 있기 때문에).

솔루션 : 퍼티 세션의 이름 example.commyOtherUse@example.com


답변

chmod는 chown이어야하므로 올바른 행은 다음과 같습니다.

sudo chown -R gituser:gituser objects

답변

이상하게도, 나는 가지고있는 레포의 복제본 하나에이 문제가 있었지만 다른 복제본에는 없었습니다. 동료 가이 문제를 성공적으로 해결 한 repo를 다시 복제하는 것 외에도 실패가 시작되기 전에 커밋에 대해 “git reset”을 수행했습니다. 그런 다음 변경 사항을 다시 커밋하고 그 후 성공적으로 푸시 할 수있었습니다. 따라서 모든 표시에도 불구하고 서버에 문제가 있었지만이 경우 로컬 리포지토리에 이상한 점이 있음을 나타냅니다.