▼ Why · What ?
GDSC 두 번째 정기 세션에서 Core 멤버인 창하형이 Git과 Github를 활용하기 위해서 알아둬야 할 것들을 설명해주고 직접 Git과 Github를 활용해서 GDSC 팀블로그 프로필을 꾸며보는 시간을 가졌다. 개발자라면 Git과 Github는 무조건 다룰 줄 알아야 하기 때문에 이번 세션이 큰 도움이 될 것 같아 더 기대되었고, 이번에 배운 내용들을 복습도 하면서 나중에 까먹었을 때 찾아볼 수 있도록 정리해두려고 한다.
▼ Git
Git ?
- Git은 "분산 버전 관리 시스템 (Distributed Version Controll System)"이다
- 여기서 버전(Version)은 어떤 프로그램을 수정, 개선하여 완성한 것, 즉 이전과 약간씩 다른 변화들을 구분하여 표현한 것이라 할 수 있다
commit
- 프로젝트의 현재 상태를 나타내는 체크포인트 또는 스냅샷, 즉 현재 버전의 코드를 'commit'을 통해 로컬 저장소에 저장하는 것이다.
add
- 작업 디렉토리(Working Directory)상의 변경 내용을 추적하여, 스테이징 영역(Staging Area)에 추가하기 위해서 사용하는 Git 명령어이다
Git의 흐름
▼ Github
Github ?
- 깃(Git)을 사용하는 프로젝트를 지원하는 웹 호스팅 서비스
Github를 왜 쓸까 ?
혼자 쓸 때
- 백업과 복원 : 로컬 컴퓨터에 저장된 코드 깃허브 저장소로 업로드하면 백업 가능
- 버전 관리 : 변경 사항을 버전으로 관리하고, 문제가 발생한 경우 이전 상태로 롤백 가능
- 포트폴리오 구축 : 개인 프로젝트 및 작업물을 깃허브에 업로드하여 포트폴리오로 활용 가능
- 코드 공유 : 개인 프로젝트를 공개 저장소로 설정하면 다른사람과 코드를 공유하고 피드백을 받을 수 있음
같이 쓸 때
- 협업과 공유 : 여러 개발자가 동시에 협업하고 소스 코드를 공유하는데 용이
- 분기와 병합 : 브랜치(Branch)를 사용하여 다양한 작업 동시 진행 가능, 변경 사항을 병합 or 관리 용이
- Pull Request : 다른 개발자의 저장소를 ‘fork’하여 수정하고, 이를 원본 저장소에 제안할 수 있는 기능
- 통합 서비스 : CI/CD(지속적 통합/지속적 배포) 서비스와 연동하여 자동화된 빌드, 테스트, 배포 가능
push / pull
- push: 로컬 환경에서 작업한 변경 사항을 원격 저장소에 업로드하는 것
- git push <저장소명> <브랜치명>
( Git은 보통 origin을 원격(remote) 저장소로 기본 설정한다 )
- git push <저장소명> <브랜치명>
- pull: 원격 저장소의 갱신된 내용을 로컬 환경에 가져오는 것
Github의 흐름
Git & Github의 흐름
OctoCat
- 이 Github이라는 시스템에서 개발자들이 함께 일할 수 있는 시스템
▼ Git · Github를 다루기 위해 꼭 알아야 하는 것
Git 필수 명령어
Pull Request (PR)
- Fork한 저장소에서 자신이 변경한 사항을 제시하고, 이러한 변경사항을 원본 저장소에 병합(Merge)해달라고 요청하는 것 !
Branch
- 독립적인 어떤 작업을 진행하기 위한 개발 라인
Branch가 왜 필요할까 ?
➜ 여러 개발자가 동시에 작업 가능
➜ 새로운 기능을 개발하거나 버그를 수정할 때, '신규 기능 추가 Branch', '버그 수정 Branch' 등으로 효과적으로 코드를 분리 가능
- branch 관련 명령어
- branch 생성 ➜ git branch [브랜치 이름]
- branch 이동 ➜ git checkout [이동할 브랜치 이름]
- branch 조회 ➜ git branch
- branch 삭제 ➜ git branch -d [브랜치 이름]
- branch 생성 ➜ git branch [브랜치 이름]
- 생성한 새로운 브랜치(branch) 활용
- 브랜치(dev_minkyu) 생성 후 해당 브랜치로 이동(checkout)
- 변경 사항 add ➜ commit ➜ push
- push할 때 생성한 브랜치 이름과 동일하게 작성
( git push dev_minkyu main )
- 브랜치(dev_minkyu) 생성 후 해당 브랜치로 이동(checkout)
▼ GDSC 팀블로그 프로필 업로드
Git 초기 세팅
- 이름 작성
: git config --global user.name “[이름]” - 이메일 작성
: git config --global user.email “[이메일]”
➜ 커밋(commit)을 한 Author의 정보를 위처럼 작성된 정보들을 통해 알아내기 위한 세팅
Fork를 이용한 복제
1. GDSC 팀블로그 리포지터리(https://github.com/gdsc-seoultech/gdsc-seoultech.github.io)에서 Fork
2. 해당 리포지터리가 내 계정 아래로 복제된 것을 확인
Fork 해온 리포지터리와 연결된 디렉토리 생성
1. Fork 해온 리포지터리 주소 복사
2. 명령어 'cd'를 이용해 디렉토리를 생성하고자 하는 위치를 먼저 설정한 후에 복제(clone)
➜ git clone [Remote Repository] [지정할 디렉토리 이름]
생성한 디렉토리와 원격 저장소를 연결하기
1. 원격 저장소(원본 저장소; gdsc-seoultech/gdsc-seoultech.github.io: Google Developer Student Clubs' Team Blog)의 주소 복사
2. 생성한 디렉토리를 원격 저장소(GDSC 팀블로그 리포지터리)와 연결
➜ git remote add [지정할 원격 저장소 별칭] [원격 저장소 url]
( 단, 생성한 디렉토리로 위치를 미리 설정(cd [생성한 디렉토리])해둬야 한다 )
[ Tip ] 보통 처음 Fork를 시도한 저장소는 'upstream'이라고 작성한다
원격 저장소와 연결된 디렉토리(파일) 수정 & 업로드
1. 'local-gdsc'를 IDE(Intellij)로 열고 파일을 수정한다
2. git add [파일/디렉토리] ➜ ' . '은 현재 디렉토리의 모든 파일을 의미합니다.
3. git commit -m “[메시지]”
4. git push [원격 저장소 별칭] [push 하고자 하는 브랜치]
➜ origin은 '원격 저장소 (Remote Repository)'의 기본 별칭이다
Pull Request 전송
1. push까지 마쳤다면, 자신의 리포지토리에서 'New pull request' 클릭
( 보통은 PR용 브랜치를 따로 생성해 PR을 보낸 후에 해당 브랜치를 삭제한다 )
➜ 원본 저장소로 이동
2. 원본 저장소에서 PR의 제목과 내용을 작성한 후에 전송한다
➜ 'Review required', 'Merging is blocked'는 관리자의 승인이 필요하다는 내용이다
3. Pull Request를 받은 원본 저장소 관리자는 코드 변경 내용을 확인하고 Merge 여부를 결정하게 된다
➜ 원작자가 승인을 하면 Merge Confirm으로 원본 저장소에 변경된 사항이 반영이 된 후에 pull request의 상태는 closed로 변경되고, 만일 맘에 들지 않는다 하면 Reject가 된다