organization : github에서 협업을 할 수 있는 단체 계정
여러 명이 같은 project
를 관리하는데 사용합니다.
github의 리포내용을 똑같이 내 pc로 받아올 때 clone
이라는 것을 사용합니다.
git clone 깃허브주소
clone
: 복사해 가져온다.깃허브주소
: 해당 주소의 폴더를이렇게
C드라이브 > 사용자
경로에서 클론을 시도하면
클론을 시도한 경로에 리포지토리 이름과 동일한 폴더가 만들어지며
리포지토리에 들어있는 파일들이 똑같이 가져와진 것을 확인할 수 있습니다.
다른 사람 레파지토리를 복제해서 내 레파지토리로 만드는 것이 바로 folk입니다.
주로 organization
의 원본 리포지토리를 내 계정으로 가져올 때 사용합니다.
folk
를 받아오면 똑같은 레포가 내 계정에 똑같이 생깁니다.
만약 사람1과 사람2가 동일한 organization
에서 똑같은 레포를 folk
했을 경우 둘 사이에 연결고리가 생기게 됩니다.
그리고 이 연결고리는 pr(push)
, fetch(pull)
를 가능케합니다.
github
와 github
사이에 정보가 오갈 경우 pull request
pr
이라는 개념이 사용됩니다.
내 기준에서 push
를 날리는 걸 pr
이라고 함
pr
fetch
라고 합니다.fetch - 변경사항을 확인만 하는 것
merge - 실질적으로 이 변경사항을 내걸로 만들겠다
pull - fetch+merge
근데 너무 번거로워요. organization인가 뭔가 그거 안 쓰면 안돼요??
결론부터 말하면 안 됩니다.
그렇게 되면 어떤 한 사람의 계정에 원본 리포지토리가 생기게 되며 모든 팀원은 해당 팀원의 리포를 folk
하여 작업하게 될 것입니다.
그런데 만약, 이 원본을 가지고 있는 사람이 작업하다 실수를 해서 커밋 몇 개가 지워지면 어떻게 될까요??
원본 망하지,
folk한 팀원들도 동시에 망하지,
둘 다 망합니다.
왜? 원본에 무턱대고 다 수정을 해버려서 세이브된 파일들이 없거든요.
예 고생길 열립니다..
그런데 organization
을 파서 팀원들 모두가 복사본(folk)을 가지고 있는 채로 작업을 하면 merge
라는 1차적인 방어막이 생기게 됩니다.
만약 사람1이 실수를 해서 파일 몇 개가 지워진다고 해도,
merge
만 하지 않는다면 원본 파일이 바로 지워지는 일이 없고
원본 리포지토리 찾아가서 얼른 다시 복구하면 되는 일이거든요!
그리고 생각보다 merge
를 할 때 에러가 생각보다 정말 많이 납니다.
개인이 push
할 때 조차 merge
에러가 날 수 있는데 원본이 1차적인 방어막 없이 바로바로 수정이 되고 있다고 생각해보세요. 끔찍하겠죠?
또 organization
을 사용하면 팀원들에게 권한을 부여할 수 있습니다.
이게 무슨 말이냐면 팀원들의 활동에 제약을 걸 수 있다는 뜻이에요.
settings > collaborators and teams > manage acceess > add people
로 들어가서 아이디를 추가해야 팀원으로써의 권한이 생기게 됩니다.
이런 권한 부여도 사용하는 이유가 있겠죠?
우선 organization
은 함부로 들어오면 안 됩니다. 당연하겠죠. 원본을 지키려고 새로 만들었는데 어떤 이상한 사람이 들어와서 원본을 망쳐버리면 어떡해요.
그래서 함부로 pr
, merge
가 불가능하도록 권한을 부여해주는겁니다.
권한에는 크게 네 가지가 있습니다.
예시를 들어보겠습니다.
만약 팀장만 admin
을 가지고 팀원들은 read
만을 가진다면 팀장이 merge
할 것을 걸러 받을 수 있겠죠.
이상한 파일들이 있다면 pr
을 승인하지 않을 수 있다는 거죠.
상황에 따라 결정하시면 됩니다~