내 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.com
user로 로그인하도록 구성된 이름의 퍼티 세션을 저장했습니다 myOtherUser
.
따라서 git example.com
이 User ‘git’ 을 사용하여 호스트에 연결한다고 생각했지만 Git / TortoiseGit은 example.com
User를 사용하는 퍼티 세션에 연결했습니다 myOtherUser
. 이로 ..insufficient permission..
인해 동일한 오류가 발생합니다 (두 사용자가 서로 다른 그룹에 있기 때문에).
솔루션 : 퍼티 세션의 이름 example.com
을myOtherUse@example.com
답변
chmod는 chown이어야하므로 올바른 행은 다음과 같습니다.
sudo chown -R gituser:gituser objects
답변
이상하게도, 나는 가지고있는 레포의 복제본 하나에이 문제가 있었지만 다른 복제본에는 없었습니다. 동료 가이 문제를 성공적으로 해결 한 repo를 다시 복제하는 것 외에도 실패가 시작되기 전에 커밋에 대해 “git reset”을 수행했습니다. 그런 다음 변경 사항을 다시 커밋하고 그 후 성공적으로 푸시 할 수있었습니다. 따라서 모든 표시에도 불구하고 서버에 문제가 있었지만이 경우 로컬 리포지토리에 이상한 점이 있음을 나타냅니다.