힘내 푸시 오류 사전 수신 후크 거부


168

이 자습서 https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md의 1-6 단계에 따라 가상 머신에서 gitlabhq 레일 서버를 실행하고 rails 서버 실행 명령을 시작합니다 sudo -u git -H bundle exec rails s -e production. 그 후 관리 도구를 사용하여 사용자를 만들고이 사용자 아래에 새 프로젝트를 만들었습니다. 그런 다음 항상 기존 프로젝트를이 리포지토리로 푸시하려고합니다. 그러나 마지막 단계에서 git push origin master오류와 함께 실패

[원격 거부] 마스터-> 마스터 (사전 수신 훅이 거부 됨)

추가 정보:

1) 전자 메일 활성화 링크를 통해 사용자 (프로젝트 소유자)를 활성화하지 않았습니다. 서버 측에서 사후 서비스를 구성하지 않았 으므로이 매뉴얼에서 그렇게하는 방법을 찾지 못했습니다.

2) Gitlab 서버는 프로젝트를 repo로 푸시하는 방법에 대한 팁을 생성 repositories/하며 경로 가 없습니다 . 나는 그것이 올바른 git@mygitlabhost:user/repo.git것이 아니라 생성된다는 것을 의미합니다 git@mygitlabhost:repositories/user/repo.git.

내가 그것을 디버깅하려고 할 때 3), I 열 pre-receive서버에서 REPO 내부에 스크립트를 출력 변수 (그 중 3가)에 시도 : refs = ARGF.read, key_id = ENV['GL_ID']repo_path = Dir.pwd과, 그 KEY_ID은 항상 비어 발견했다. 어쩌면 문제가 여기에 있습니다. 그렇다면 문제를 해결하는 방법에 대한 제안을 제공해주십시오. 감사


15
맹세합니다. 모든 소프트웨어 개발 팀에는 매일 깨우고 다른 개발자의 삶을 더 어렵게 만드는 방법을 생각하는 사람이 적어도 1 명 있습니다.
samayo

대부분의 사람들에게 효과가있는 매우 인기있는 답변이있는 것 같습니다. 그러나 필자의 경우 푸시하려고 할 때 실수로 다른 컴퓨터에서 이미 다른 푸시가 진행 중일 때 동일한 메시지가 Git Hub 에서 수신되었습니다 .
Hack-R

답변:


230

GitLab 기본 마크에 의해 master같은 지점 protected(참조 부분 Protecting your code에서 https://about.gitlab.com/2014/11/26/keeping-your-code-protected/ 이유). 그렇다면 귀하의 경우 다음과 같은 도움이 될 수 있습니다.

프로젝트> 설정> 저장소를 열고 "보호 된 분기"로 이동하여 목록에서 "마스터"분기를 찾은 다음 "보호 해제"를 클릭하고 다시 시도하십시오.

https://gitlab.com/gitlab-com/support-forum/issues/40을 통해

버전 8.11 이상의 방법 : https://docs.gitlab.com/ee/user/project/protected_branches.html#restricting-push-and-merge-access-to-certain-users


8
UI가 약간 변경되었습니다. 프로젝트 "설정"후 "리포지토리"탭을 클릭하십시오. 그렇다면 "보호 된 지점"
Donn Lee

그래서 OP와 같은 문제가 발생 했으며이 솔루션이 도움이되었습니다. 감사합니다! 근데 왜 궁금해? 나는 잠시 동안 gitlab을 사용하고 있었고 갑자기이 작업을 수행 했습니까? 무엇이 바뀌 었습니까?
Andrew Lamarra

2
때문에 GitLab 8.11옵션이 약간 변경, 세부 사항을 확인 여기
Arghya C에게

같은 문제에 직면하고 있습니다. 여기에서도 다른 지점을 밀 수 없습니다. 그래도 처음으로 추진하고 있습니다.
Santosh Kadam

1
보호되지 않은 제거했지만 이제 어떻게됩니까? 세계의 다른 사람이이 레포지토리에서 작업 할 수 있습니까?
Flutterer

14

내 로컬 컴퓨터에서 해결 된 문제는 다음과 같습니다.

A. 먼저 Bitbucket Server에 연결하기 위해 올바른 로그온 정보를 사용하고 있는지 확인하십시오 (예 : 자신의 사용자 이름 / 암호 / SSH 키). 

B. 그런 다음 로컬 Git 구성에 이름 / 이메일 주소가 올바르게 설정되어 있는지 확인하십시오. 푸시하려는 계정에 대해 로컬 Git 구성을 설정하십시오 (확인은 파일을 커밋 한 사람임을 나타냅니다). 이름과 이메일 주소 모두 대소 문자를 구분합니다. * 또한 공백을 사용합니다. 일부 회사 계정에는 이름에 공백이나 문자가 있습니다. "Contractor/ space space(LDN) ". Bitbucket Server와 동일한 수의 공간을 구성에 포함해야합니다. 걸린 경우 메모장에서이를 확인하십시오.

C. 잘못된 계정을 사용하는 경우 계정 자격 증명 (사용자 이름 / 암호 / SSH 키)을 전환하고 다시 밀어 넣으십시오.

D. 그렇지 않으면, 로컬 구성이 올바르지 않은 경우이를 수정해야합니다.

MAC의 경우

open -a TextEdit.app ~/.gitconfig

참고 : 푸시하려는 이전 커밋을 수정해야합니다.

  1. 마지막 커밋을 수정하십시오.

    > git commit --amend --reset-author
    
      
    <save and quit the commit file text editor that opens, if Vim then
    :wq to save and quit>
    
  2. 커밋을 다시 푸시하십시오.

    > git push
    

12

내 경우, REPO을 생성 (REPO가 비어)와 같이 저를 할당 내 팀의 리더 개발자는 내가 직접 내가 직면 한 오류 마스터 코드에 푸시 있도록 할 때 ! [remote rejected] master -> master (pre-receive hook declined)그것은 그가 나를에 할당 된 것으로 고정 방법에 따라서를 메인테이너 I 있도록 코드를 마스터에게 직접 푸시 할 수있었습니다.


10

sidekiq와 같은 일부 서비스에 문제가있는 것 같습니다. 실행 sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production하면 구성의 모든 문제가 출력됩니다.



2

프로젝트 또는 마스터 브랜치에 대한 개발자 액세스 권한이 없을 수 있습니다. 새로운 작업을 추진하려면 개발자 액세스 권한이 필요합니다.

새로운 일은 새로운 가지와 커밋을 의미합니다.


2

사실이 아닐 수도 있지만 이것이 " 수령 전 후크 의 해결책이었습니다." "오류 .

Pull Request 를 통해서만 수정을 허용하는 일부 저장소가 있습니다. 이것은 당신이해야한다는 것을 의미합니다

  1. 변경 사항을 적용 할 지점을 기준으로 새 지점을 만듭니다.
  2. 변경 사항을 커밋하고 새 브랜치에 적용하십시오.
  3. 풀 요청을 열어 브랜치를 원래 브랜치와 병합하십시오.

0

git 계정에 ssh 키를 추가해야합니다. 오류가 발생하면 이전 ssh 키를 삭제하고 새 ssh 키를 만든 다음 추가하십시오.


도움이되지 못했습니다. : (vm 및 로컬 컴퓨터 관련 root 및 myuser 계정 모두에서 테스트 됨
Hroft

git remote -v를 확인하십시오 .git repo가 ​​추가 되었습니까?
Hardik Hardiya

'git remote -v'출력 : origin git @ mygitlabhost : repositories / user / repo.git (fetch) origin git @ mygitlabhost : repositories / user / repo.git (푸시)
Hroft

호스팅 된 gitlab을 사용하는 경우 문제가있을 수 있습니다. 몇 분 후에 다시 시도하십시오.
Erik Aronesty

0

나는 변경하여이 문제를 해결 remote 'origin' url에서 httpgit의 프로토콜.git/config


0

Project settings-> Hooks-> (Under) Pre-receive hooks로 이동하십시오.

커밋에서 cp 요구 이슈 참조 비활성화


0

BitBucket을 사용하여 동일한 오류가 발생했습니다. 로컬 Git 리포지토리를 사용하여 온라인으로 백업하고 싶었으므로 웹 인터페이스를 사용하여 BitBucket 계정에서 새 리포지토리를 만들었습니다.

실행 한 후 git remote add origin git@bitbucket.org:StatMarianne/<a private repo>.git, 내가 달릴 git push origin master아무 소용 (I 일반적으로 사용하지 않는 -u 와 옵션을git push 내가 밀어 때 전체의 repo 및 지점 이름을 입력하고 당겨 신경 쓰지 않기 때문에 참조).

오류 읽기 :

remote: You're not allowed to write to this repository.
To bitbucket.org:StatMarianne/<a private repo>.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@bitbucket.org:StatMarianne/<a private repo>.git'

하지만 내가 달렸을 때 현지 지점이 성공적으로 밀려났습니다. git push -u origin master (BitBucket의 지침을 엄격히 따름).

어쨌든 -u ( --set-upstream)는 "업스트림 (추적) 참조 만 추가"해야하기 때문에 놀랍습니다 .


-1

나는 같은 문제에 직면했다. 왜냐하면 마스터 브랜치에서 직접 코드를 푸시하고 있기 때문에 이에 대한 권한이 없기 때문이다. 그래서 새 지점에서 코드를 푸시 한 다음 master와 병합하기 위해 풀 요청을 만들었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.