무언가 만들어보기/펭귄맨

펭귄맨 : GitHub 세팅 - part 1

도리언 옐로우 2024. 4. 8. 02:50

1. 서

깃(Git)은 분산형 버전 관리 시스템이다. '분산형'의 핵심은 원격 저장소와 로컬 저장소가 분리되어 개발자들이 독립적으로 작업할수있고, 필요시 원격저장소와 동기화하여 협업이 가능하다는 점에 있다. 그동안 로컬의 변경사항을 원격저장소에 push하거나 원격 저장소의 변경 사항을 로컬로 pull해왔던 것은 분산형 버전 관리 시스템의 특성에서 비롯된 것이다. 그리고 깃헙(GitHub)은 이러한 깃을 기반으로 하는 웹 호스팅 서비스인데, 원격 저장소의 역할을 수행하고 협업을 위한 다양한 툴을 제공한다.
 
개발자에게는 협업이 매우 중요한데, 깃헙은 이러한 협업에 필수적인 플랫폼이다. 개발자들은 포트폴리오나 이력서에 자신의 깃헙 주소를 명시해놓음으로써 자신의 전문성과 프로젝트 경험 및 협업능력을 보여준다. 결국 깃헙을 잘 쓸 수 있다는 것 자체가 개발자로서 큰 메리트가 된다. 
 
이번에 할 것은 프로젝트 펭귄맨에서 활용하게 될 깃헙 세팅이다. 사실 개인프로젝트기 때문에 연습의 의미가 크다. 이전 팀프로젝트에서도 깃헙 세팅을 해보았지만 많이 미숙하였고 결국 팀원의 도움을 받았었다. 이번에는 개인 프로젝트이기 때문에 물어볼 팀원은 없지만, 대신 성공할때까지 시도해볼 수 있다는 장점이 있다. 이번 기회에 깃헙 세팅과정을 몸에 익히고, 또 깃헙 세팅에 관한 내용을 문서화 해놓는다는 마인드로 포스팅을 시작해 본다.
 

2. GitHub 세팅 프로세스

(1) 일단 해야 할 것

깃헙에서 원격 저장소를 생성하고, git clone 명령어를 통해 원격 저장소의 내용을 복제하여 로컬에 새로운 저장소를 생성하는 과정을 먼저 수행해야 한다.
 

1) 원격 저장소 생성

깃헙에서 PenguinMan이라는 새로운 repository를 생성하였다. PenguinMan은 인터넷을 통해 어디서든 접근할 수 있는 원격 저장소이다. 

PenguinMan 레포지터리 생성

 
2) 로컬 저장소 생성

바탕화면의 myproject\project1 디렉토리에 로컬 저장소를 만들 것이다. 해당 위치에서 git clone명령어를 통해 위에서 생성한 원격저장소의 내용을 복제해온다.

git clone 실행

git clone 실행후, project1 디렉토리에 PenguinMan이라는 새로운 디렉토리가 생성되었고, 여기에 .git 디렉토리가 생성된 것을 확인할 수 있다. 이 .git 디렉토리가 깃의 핵심인데, 이 디렉토리를 통해 프로젝트의 버전관리가 수행된다는 점을 기억하자.

로컬 저장소

 
3) 저장소 연동 확인

git clone 명령어를 사용하여 원격 저장소의 내용을 로컬로 복제해오면 원격저장소와 로컬 저장소가 자동으로 연동된다. 연동여부는 git remote -v 명령어로 확인할 수 있다.

저장소가 연동된 모습

 
4) 깃 브랜치 전략 선택

일반적으로 널리 사용되는 깃 브랜치 전략은 Git-Flow 이다. 복잡한 프로젝트에 적합한 Git-Flow 특성상 소규모 개인프로젝트에는 안 어울릴 수 도 있으나, 연습한다고 생각하고 Git-Flow를 선택하였다.
 
Git-Flow는 main 브랜치와 develop 브랜치를 중심으로 작업이 진행되는데, 특히 develop 브랜치가 디폴트가 된다. develop 브랜치에서 분기된 feature 브랜치에서 새로운 기능을 개발하고, 개발이 완료되면 develop 브랜치로 병합하게 되며, 릴리스 시점에 develop 브랜치에서 main 브랜치로 병합하는 것이 Git-Flow의 대략적인 흐름이다.
이제 중심이 되는 develop 브랜치를 생성하고 브랜치를 이동한다.

develop 브랜치 생성 및 checkout

 

(2) commit template 설정 + (깃헙 기여 과정)

commit template을 설정하면 커밋 메세지를 일관된 스타일로 유지할 수 있다. 특히 협업시에 유용한데, commit template을 통해 한 사람이 작업한 것 처럼 일관성 있고 깔끔하게 작성할 수 있게 된다. commit template 설정과정에 더하여, 깃헙 프로젝트의 구체적인 기여 과정(issue 생성, 커밋과 푸쉬, PR 등)을 여기서 함께 살펴보기로 한다.

 
1) issue 생성

깃헙에서는 이슈를 통해 작업을 관리한다. 깃헙 이슈를 사용하면 개발 과정을 체계적으로 기록 관리할 수 있기 때문에 어지간한 작업은 다 이슈를 만든다고 생각하면 편하다.

첫 이슈를 만들어 보았다

우측의 Assignees에 나자신을 넣어주었고 Labels에는 세팅이므로 setting 라벨을 만들어서 넣어주었다. 제목을 보면 chore와 망치모양의 아이콘이 들어가 있는데, 이는 커밋 메세지 등에서 활용할 이모지 규칙을 따른 것이다.

 
2) .commit_template 파일 생성 및 등록

.commit_template 파일을 생성하고 아래의 내용을 복붙해준다.

.commit_template 생성

# (gitmoji) <타입> : <제목><이슈번호>

##### 제목은 이슈 번호와 함께 최대 50 글자까지 한 줄로 입력 ############## -> |

# 본문은 위에 작성

######## 본문은 한 줄에 최대 72 글자까지만 입력 ########################### -> |

# --- COMMIT END ---

# <타입> 리스트

# ✨(:sparkles:) feat : 기능 (새로운 기능)

# 🐛(:bug:) fix : 버그 (버그 수정)

# ♻(:recycle:) refactor : 리팩토링

# 💄(:lipstick:) style : UI 스타일 변경

# 📝(:memo:) docs : 문서 (문서 추가, 수정, 삭제)

# ✅(:white_check_mark:) test : 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없음)

# 🔨(:hammer:) chore : 기타 변경사항 (빌드 스크립트 수정 등)

# ------------------

# 제목은 명령문으로

# 제목 끝에 마침표(.) 금지

# 제목과 본문을 한 줄 띄워 분리하기

# 본문은 "어떻게" 보다 "무엇을", "왜"를 설명한다.

# 본문은 한 줄을 작성하고 . 마침표를 찍어서 분리한다.

# ------------------

 
이제 git 설정에 템플릿 파일을 등록하면 위 형식의 커밋 템플릿을 사용할 수 있게 된다. 다음 명령어를 입력하면 된다.

위 템플릿을 global로 설정하였다

 
3) 원격 저장소로 push

커밋 템플릿이 제대로 등록되었는지 확인해볼겸 원격 저장소로 push해보자. 당연히 일단 git add로 스테이징 한다.

git add

git commit부터 좀 달라지는데, 원래는 git commit -m "message" 와 같은 형식으로 커밋하였으나, 템플릿을 등록하였으므로 이제 git commit만 입력하면 된다. 제대로 등록 되었다면 git commit을 입력했을때 VSCode에서 편집기가 열려야 한다.

git commit을 입력하자 무엇인가 작동하기 시작한다
아까 설정한 템플릿이 잘 열리고 있다

템플릿의 지시를 참고하여, 2번째 줄에는 제목 "🔨 chore : git commit template 설정 #2" 을 입력하였고, 4번째 줄에 본문으로  "- git commit template 파일 업로드"라고 작성하였다. 
 
템플릿에 내용을 다 적었으면 저장하고 템플릿 창을 닫아준다. 닫아주면 commit까지 완료된 것이고, 이제 git push를 하여 원격 저장소에 넣어주면 된다. 

처음 push할때 -u를 붙여주면 지정된 원격 브랜치를 자동으로 추적하게 된다

 
4) Pull Request

그동안 깃헙세팅 관련내용은 한큐에 PR해왔지만, 이번에는 연습삼아 지금 push한 commit template 내용에 대하여 main 브랜치로 PR까지 해보자. 참고로 기본 설정을 완료하면 디폴트 브랜치를 develop 브랜치로 변경할 것이므로 이후의 PR은 develop 브랜치로 이루어지게 될 것이다. 위의 git push를 완료한 뒤 깃헙 레포지터리의 pull requests로 가면 다음과 같은 알림이 떠있을 것이다.

2분 전 develop 브랜치에 push가 있었음을 알려주고 있다

 
오른쪽의 compare & pull request 버튼을 누르면 pull request를 생성하는 화면이 나온다. 아직 pull request 템플릿을 설정하지 않았으므로 개요, 작업사항, issue란을 직접 작성해준다. issue란에는 pull request를 완료후 닫을 issue를 적어주면 된다. 개인프로젝트이므로 reviewer는 따로 존재하지 않는다.

손수 작성한 pull request

 
create pull request버튼을 누르면 pull request가 생성된다. 따로 review를 하지 않으니, 왼쪽 하단의 merge pull request버튼을 누르면 main branch로 merge되고 pull request가 닫히게 된다. 이때 #2번 issue가 함께 close될 것인데,  혹시 close 되지 않으면 직접 close해 주자.

바로 merge해 버렸다

 

3. 결어 - part 2에서 계속

미래의 나를 위해 최대한 상세하게 적다보니 글이 생각보다 훨씬 길어졌다. 깃헙 세팅과 관련하여 이제 git ignore, pre-commit, issue 및 PR template 설정이 남았는데, 이는 part 2에서 이어서 쓰기로 한다.