IT Share you

Git 분기 액세스를 제한하는 방법?

shareyou 2020. 11. 11. 20:56
반응형

Git 분기 액세스를 제한하는 방법?


GitHub를 사용하여 관리되는 git 저장소에 4 개의 분기가 있습니다.

  • 생산
  • 각색
  • 석사
  • [사람 이름]-개발

쓰기 액세스를 단일 브랜치 ([사람 이름]-개발)에만 제한하는 방법이 있습니까? 어떻게해야합니까?

참고로 비슷한 질문 : 분기에 대한 쓰기를 제한하기 위해 git hook을 작성하는 방법은 무엇입니까? .


GitHub를 사용할 때 가장 좋은 옵션은 각 개발자가 자신의 마스터 저장소 포크를 갖는 것입니다. 모든 사람은 자신의 저장소로 푸시하고 마스터 저장소에 대한 푸시 액세스 권한이있는 사람은 각 개발자의 저장소에서 가져 오는 핸들을 처리합니다. 이것이 대부분의 오픈 소스 프로젝트가 작동하는 방식입니다.

자체 Git 서버를 사용하는 경우 사용자가 잘못된 브랜치로 푸시하는 것을 방지하기 위해 후크를 사용할 수 있어야합니다.


GitHub는 올해 초 조직 의 브랜치푸시 할 수있는 사용자제한하는 기능을 추가 했습니다 .

가지를 제한하다


참고 : 보호 된 분기 및 필수 상태 확인 (2015 년 9 월 3 일)은 단일 분기 ( "[사람 이름] -development")를 정확히 허용 하지 않지만 복제를 가져옵니다.

분기가 보호됩니다.

  • 강요된 것에 대하여
  • 삭제 반대
  • 필요한 상태 확인이 통과 될 때까지 병합 된 변경 사항에 대해

https://cloud.githubusercontent.com/assets/25792/9596474/27db3ce6-502a-11e5-9b19-5b47a8addc65.png


GitLab 및 "보호 된 분기"기능을 확인하는 것이 좋습니다. 나는 당신이 찾고있는 것과 거의 일치한다고 생각합니다. 코드 보호 유지를 참조하십시오 .


Esko 는 오픈 소스 프로젝트에 적합한 훌륭한 솔루션을 제안했습니다. 그러나 공동 작업자 팀의 모든 구성원이 GitHub에 유료 계정을 가지고 있어야하지만 항상 사실은 아닙니다.

VonC 는 하나의 유료 GitHub 계정 만 포함하는 또 다른 솔루션이 있다고 지적했습니다. 그리고 VonC의 솔루션을 구현하는 방법에 대한 튜토리얼을 제공 할 것입니다.

두 개의 개인 저장소가 있다고 가정 해 봅시다 : test-testtest-production. 첫 번째 저장소는 개발 용이며 팀의 모든 구성원이 액세스 할 수 있습니다. 두 번째 저장소는 코드 자동 배포를위한 것이므로 강력한 액세스 제한이 적용됩니다.

개발자를위한 설정은 매우 간단하고 정직합니다. git clone https://github.com/<username>/test-test, 작업을 수행하고 다시 푸시합니다.

공동 작업자를위한 설정은 조금 더 복잡합니다.

  1. 개발 저장소에서 분기 가져 오기 git clone https://github.com/<username>/test-test

  2. 원격 저장소 추가 git remote add production-repo https://github.com/<username>/test-production.git

  3. 새 저장소에서 데이터 가져 오기 git fetch production-repo

  4. 프로덕션 코드에 대한 새 로컬 브랜치를 생성하고 전환합니다. git checkout -b local-production

  5. git에게 로컬 및 원격 분기를 연결하도록 지시 git branch -u production-repo/production

  6. 원격 프로덕션 브랜치의 콘텐츠를 로컬 브랜치로 다운로드 git pull

  7. 가능한 충돌을 분류하면 그게 다입니다!

이제 local-production브랜치 에서 푸시 된 모든 항목 test-production리포지토리로 이동하고 다른 브랜치는 test-test리포지토리 로 푸시됩니다 .

좋습니다.하지만 더 세분화 된 ([사람 이름]-개발) 액세스는 어떻습니까? -물어봐도 돼. 대답은 다음과 같습니다. test-test모든 개발자 대해 유사한 리포지토리를 만들고 설정에 동일한 패턴을 사용할 수 있습니다. 이 접근 방식의 단점은 공동 작업자가 각 test-test-[person's name]-development저장소 를 복제해야한다는 것 입니다.

VonC는 또한 리포지토리를 포크하고 production풀 리퀘스트를 할 것을 제안 했습니다. 왜 그렇게하지 않겠습니까? 첫째, GitHub 계정을 지불하지 않으면 개인 저장소를 포크 할 수 없기 때문입니다. 둘째, 누군가가 개인 저장소 를 포크 할 수 있도록 허용 하려면 그에게 전체 액세스 권한을 부여하여 직접 푸시 할 수 있습니다. 그리고 개발자는 실수를하여 productionGitHub 서비스 후크를 시작 하고 문제를 해결하는 저장소로 푸시 할 수 있습니다 . 그리고 여러 명의 아웃소싱 개발자를 사용한다면 이런 일이 일어날 것입니다.

또한 Windows 용 공식 GitHub 앱 버그 기능에 대해 경고하고 싶습니다 . 원점과 상류가 다른 지점이 원점에 들어갑니다. 따라서 푸시를 위해 명령 줄을 사용하십시오.

All these things sound little bit overcomplicated. But it is always like that if you don't want to pay for simplicity.


As with GitLab, so does BitBucket.org have a branch restriction feature.

http://blog.bitbucket.org/2013/09/16/take-control-with-branch-restrictions/


In Bitbucket version (Bitbucket v4.9.1) You can restrict changes by:

  1. Branch name
  2. Branch name pattern
  3. Branch name modelling

Following actions can by restricted:

  1. Prevent all changes
  2. Prevent deletion
  3. Prevent rewirting history
  4. Prevent changes without a pull request

Enter user that is an exception;

여기에 이미지 설명 입력 여기에 이미지 설명 입력


Not practically. Git branches aren't really distinct from one another in the way that you're probably thinking they are.

What you probably want to do here is use a separate repository for each user's development branch.


bitbucket을 사용하는 경우이를 처리하기위한 분기 권한이 있습니다. https://confluence.atlassian.com/bitbucket/branch-permissions-385912271.html

참고 URL : https://stackoverflow.com/questions/8781240/a-way-to-restrict-git-branch-access

반응형