오늘은 git을 이용하면서 협업에 자주 사용하게 될 pull request 등과 협업에 필요한 기본 세팅법에 대하여 내가 이해한것만 간단하게 안까먹을만큼만 적어보겠다.
나는 우선 초기 세팅부터 진행하는 것을 작성할텐데, 뒤쪽 pull-request 부분만 봐도 상관 없다!!
(틀린 거는 댓글로 작성해주시면 감사하겠습니다..)
1. organization 생성
우선 github에서 organization을 만든다.
이후 팀원들을 초대해주면 된다.
2. 기본 세팅
우선 organization을 만들었으면, 기본 세팅을 진행해줘야 한다.
repository를 만들고, 라이센스나 git ignore 등을 세팅해주고 필요에 따라 issue 템플릿이나 issue등을 생성해준다.
나는 라이센스는 깃허브에서 repo를 생성할 때 만들고, git ignore은 아래 사이트에서 복사해서 만들어준다.
3. 로컬 세팅
이제 내가 방금 조직을 만든 팀장이 아니라, 팀원이라는 가정하에 진행할 것이다.
팀 repo fork
팀원들은 방금 생성된 팀 repo를 fork한다음, 자신의 로컬로 clone 해준다.
(이건 케바케라고 하는데, 어떤데는 fork한다음 하지는 않고 clone하고 브랜치를 따로따로 만들어서한다고 하고 어떤데는 fork하고 clone해서 진행한다고 한다?)
fork 해온 repo clone
github에서 해당 repository를 fork해왔으면, 그 fork해온 레포지토리를 내 로컬에 클론해준다.
우선 깃허브에서 해당 repo의 링크를 복사한다음 에디터를 켜서 저장하고자하는 디렉토리로 이동 후 아래 코드를 이용하여 clone을 진행해준다.(vscode를 이용하는 사람들은 `ctrl+shift+p`를 눌러서 git clone검색하면 손쉽게 clone할 수도 있다. )
`git clone https://github.com/Bae-ChangHyun/tes.git`
이동후에 `git status`를 찍어보면, 이제 로컬의 폴더가 git 저장소로 바뀌었음을 확인할 수 있다.
다음으로, 추후 작업을 위해 팀repo를 우선 로컬과 연결해둔다.(관습적으로 팀레포를 upstream이라고 별칭alias를 지정한다) ->아까는 fork해온 자신 repo의 링크를 가져온것이고, 이것은 팀 repo의 url을 가져오면 된다.
`git remote add upstream https://github.com/testsssssssssssssss/tes.git'
이렇게 하면 내 팀 레포와 내 로컬도 연결이 된 것이다.
fetch upstream
우선 위에까지 진행했으면, 내 로컬에 팀프로젝트의 사본이 복사되어있을 것이다.
그런데 내가 사본을 받는 사이 누군가 팀 레포를 업데이트했다? 그럼 내껀 자동으로 반영이 당연히 안된다. 왜냐면 로컬이기 때문에(fork해온것도 마찬가지). 우선 이 경우부터 반드시 해결하고 넘어가야된다. 그렇지 않으면 나중에 conflict가 발생하니까!! 간단하다. 최신 팀 레포를 다시 받아오면 된다.
` git fetch upstram` 를 사용하면 아까 upstream으로 설정해놓은데서 최신버전을 가져온다. 이때 pull을 해도되긴하지만? fetch를하는데, fetch와 pull의 차이점은, pull은 가져와서 바로 기존의 내꺼와 바로 merge하는데 fetch는 가져오고 그걸 내가 merge를 따로하면 된다.(중간에 문제가 있을수도 있으니 중간과정을 거치는 것).
암튼 다시 순서대로 코드만 써보면.아래와 같이, 최신버전을 받아오고 자신의 로컬과 merge한 뒤, 자신의 repo에 다시 업데이트해주면 이제 fork해서 온 내 repo와 원본 팀 repo와 동일해진 상태이다!
이 과정은 매번 내가 push하기전에 확인하고 진행해야 한다!! 그렇지 않으면 conflict가 난다!!!
# 팀레포 최신버전을 받아옴
git fetch upstram
# 자신의 main 브랜치로 이동
git switch main
# 내 main이랑 원본저장소(upstream/main)랑 합침
git merge upstream/main
# 내가 fork해온 내 repo에 업데이트
git push origin main
pull request
pull requset는 언제 쓰이는 것이부터 설명해보자.
우선 git에 우리 팀이 진행하고 있는 프로젝가 있다고 치자. 우리가 이제 중간중간 버그도 고치고 개발을 할텐데 서비스가 진행 중인 혹은 지금은 잘 돌아가는 프로젝트에 개발중인 걸 합쳐버렸다가 문제가 생기면 비상이다.
따라서 내가 코드를 잘 수정하고, 올려도 되는지?> 허가를 받는 것을 pull request라고 보면된다. 팀장이 허락을하면 이제 메인 프로젝트와 내껄 merge할 수 있는 것이다.
이제 개념을 알았으니 다시 내가 팀원이라 생각하고 진행해보자.
우선 일반적으로 나는 브랜치를 새로 만들어서 작업을 수행하고, 브랜치에서 잘 작동되는 코드를 합치고자 할 것이다.
우선 내 repo가 현재 팀repo와 같은 상태인지 반드시 확인한 뒤, 내가 방금 작성한 코드를 내 repo에 commit , push하고, github에 들어가서 fork 해온 내 repo에 들어간다. 그럼 pull request라는 버튼이 있는데 그걸 누른다. 이후 new pull request를 누른뒤 좌측이 팀 repo 그리고 오른쪽이 내 현재 repo가 되도록 설정해준다.
이때 지금은 아무 문제가 없기 때문에 오른쪽에 able to merge가 되어있을텐데, conflict가 발생할수도있다고 뜰 수도 있다. 이럴 땐 현재 내 repo가 upstream 팀레포와 같은 상태인지 다시 확인해보길 바란다.
이렇게 팀원의 계정에서 pull request를 요청하면 이제 팀장이 팀 repo에서 pull requset를 허락할수도 거절할 수도 있다.
허락하고자한다면 아래의 merge pull request를 눌러주면 된다.
그럼 이제 팀 repo에 방금 내가 수정한 파일이 정상적으로 반영되었을 것이다!!!!
자 줄글로 다시 요약을 해보자면,
1. 우선 organization을 만들고 거기서 팀 repository를 만듦.(gittignore, issue템플릿 등등)
2. 나는 팀 repo를 fork해서 내 repo로 가져오고, 내 repo를 clone해서 내 로컬에 가져옴.
3. 내 로컬에서 우선 git remote add upstream 팀레포url 하여 연결
-> 앞으로 팀레포에 업데이트가 생기면 그걸 내 fork해온 repo에 반영을 해야함.
- git fetch upstram
- git switch main 자신의 local인 main으로 이동
- git merge upstream/main 내 로컬에 팀레포(upstream/main)를 복사
- git push origin main :내 레포에 방금 합쳐진 내 로컬을 올려줘야 함.
4. 파일을 수정한 뒤, 내 repo에 먼저 commit, push 하고 github에 들어가서 pull_request를 요청.
-> 내 fork 해온 repo에서 열면되는데 내 repo가 오른쪽, 팀레포가 왼쪽임. 반드시 팀레포와 동일한 상태인지 확인하고 작업을 진행해야 함
5. 팀장이 pull request를 허용하면 팀레포에 merge됨.
우선 내가 진행하바를 그대로 적어봤고, 자세한 것들은 유튜브에도 pull request 하는 법 검색하면 다양한 영상들이 나온다!! 근데 git checkout-> git switch 그리고 master branch -> main branch 등으로 변경된 것들이 있으니 유의하면서 보면 쉬울 것이다!!!
추가적으로 설명이 잘되어 있는 블로그들!!
'알쓸신잡' 카테고리의 다른 글
git repository 안에 repository 관리 (1) | 2023.11.23 |
---|---|
[Github README 꾸미기] (0) | 2023.11.23 |
Git 기본 명령어 (0) | 2023.11.20 |
Git commitizen, gitmoji 사용 (1) | 2023.11.20 |
티스토리 인라인 코드블럭 (0) | 2023.11.18 |