반응형

이전에 모두의 깃&깃허브 책을 읽고, 조금 더 어려운 내용을 알고 싶어서 '팀 개발을 위한 Git, GitHub 시작하기' 책을 읽었습니다. 개발자 동료가 추천해준 책이기도 하고, 7일 완성 로드맵도 있어서 따라 하기 괜찮다고 생각했습니다. 

사실 '모두의 깃&깃허브' 책에서는 충돌, 버그 발생 시 해결하는 방법이 자세하게 나오지 않아서 아쉬웠는데, '팀 개발을 위한 Git, GitHub 시작하기' 책에서는 다양하게 방법을 알려주어서 실무에 도움이 되는 책입니다. 

 

팀 개발을 위한 Git, GitHub 시작하기 리뷰 

팀 개발을 위한 Git, GitHub 시작하기

우선 이 책은 간단한 CLI 실습 -> 소스 트리 GUI 실습-> Git Bash CLI 실습으로 구성되어 있습니다. 

첫 장부터 CLI가 나온다고 당황하지 말고, 술술 읽어보면 어느새 Git Bash CLI 실습까지 읽고 이해하는 모습을 보실 수 있을 겁니다. 그리고 CLI, GUI 환경에서 발생할 수 있는 문제 해결법을 제시해주어서 좋습니다. 


추천 대상

Git을 설치한 경험도 없는 분이라면 초반에 개념을 따라가기 벅찰 수도 있지만, 두 번 정도 읽으면 자유롭게 Git을 쓸 수 있는 실력을 만들어주는 책이라 생각합니다. Git 개념이 헷갈리는 분이 보면 좋은 책이어서 초보자분께 좋은 책입니다. 

그리고 협업에서 Git을 사용하는데, Conflict나 브랜치 병합을 해야 하는데 Git을 자유롭게 쓰지 못하는 분께 추천합니다. 

초반에 상세하게 Git 관련 용어가 정리되어 있어 협업에서 쓰는 말의 뜻이 정확하게 무엇인지 알 수 있고, 뒷부분에 Amend, Cherry-pick, reset, revert, stash, 충돌 해결 방법, 브랜치 관리 방법을 자세하게 설명해주는 책이어서 추천합니다. 

 

Git 용어 정리

Git: 깃이라고 읽고, 버전 관리 시스템을 의미합니다. 

GitHub: 깃허브라고 읽고, Git으로 관리하는 프로젝트를 올려둘 수 있는 사이트입니다. 

GUI: 그래픽 유저 인터페이스, 마우스로 클릭해서 사용하는 방식

CLI: 커맨드 라인 인터페이스, 명령어를 입력해서 사용하는 방식

Git Bash: CLI 방식으로 Git을 사용할 수 있는 환경 (git bash의 붙여넣기는 Ctrl+v가 아니라 Shift+insert입니다) 

커밋: 버전 관리를 통해 생성된 파일, 혹은 그 행위

checkout: 원하는 지점으로 파일을 되돌릴 수 있는 명령어

Repository: 원격 저장소를 의미합니다. 

push: 로컬저장소의 커밋을 원격저장소에 올리는 것.

pull: 원격저장소의 커밋을 로컬저장소에 내려 받는 것.

워킹 트리(working tree): 워크 트리, 워킹 디렉토리, 작업 디렉토리, 작업 폴더 모두 같은 뜻입니다. 일반적으로 사용자가 파일과 하위 폴더를 만들고 작업 결과물을 저장하는 곳을 Git에서는 워킹 트리라고 부릅니다. '커밋을 체크아웃하면 생성되는 파일과 디렉토리' , 작업 폴더에서 .git 폴더를 뺀 나머지 부분이 워킹 트리입니다.

로컬저장소(local repository): Git init 명령으로 생성되는 .git 폴더가 로컬 저장소입니다. 

원격저장소(remote repository): 로컬저장소를 업로드하는 곳을 원격저장소라고 부릅니다. (GitHub)

Git 저장소: '비어있는 Git 저장소를 .git에 만듭니다.'라고 나오기 때문에 로컬 저장소와 같은 뜻입니다.  

업스트림(upstream): 업스트림 브랜치는 로컬저장소와 연결된 원격저장소를 부르는 단어입니다. 

 

소스트리 Clone, Add, Create 차이 

sourcetree clone add Create

Clone: 원격저장소를 내 컴퓨터에 받아오고, 소스트리에 추가

Add: 내 컴퓨터에서 이미 만든 로컬저장소를 소스트리에 추가

Create: 내 컴퓨터의 폴더에 새로운 로컬저장소 생성하기(git init) 


브랜치를 사용하는 이유

1. 새로운 기능 추가

master 브랜치에는 정상동작 하는 안정적인 버전의 프로젝트를 저장합니다. 새로운 기능을 추가할 때, 새로운 브랜치를 만들어서 master 브랜치에 merge하는 방식으로 개발이 이루어집니다. 개발, 코드리뷰, 테스트까지 모두 완료해서 이상이 없으면 master 브랜치로 병합합니다. 

2. 버그 수정

버그가 발생하면 master 브랜치로부터 hotFix, bugFix 같은 이름의 브랜치를 생성합니다. 

- 오류가 없는 버전으로 롤백

- master 브랜치로부터 hotFix 브랜치 생성

  git checkout -b hotfix master  //master로부터 hotfix브랜치 생성, 체크아웃

  git log --oneline --all -n2 //2개의 커밋 로그만 보기

- 코드 수정, 테스트 완료

  echo "some hot fix" >> file1.txt

  git add file1.txt

  git commit

- master 브랜치로 병합 및 배포

  git checkout master

  git merge hotfix

  git push 

- 개발 중인 브랜치에도 병합 

3. 병합과 리베이스 테스트

임시 브랜치를 만들어서 병합과 리베이스 테스트를 해 보면 편리합니다. 

잘못되었을 경우 임시 브랜치를 삭제하면 됩니다. 

4. 이전 코드 개선

새로운 브랜치를 만들어서 이전 코드는 과감하게 삭제하고 새 코드를 작성합니다. 

5. 특정 커밋으로 돌아가고 싶을 때

hard reset이나 revert를 사용할 수도 있지만, 새로 브랜치를 만들어서 작업하고 리베이스나 병합을 사용할 수 있습니다. 


브랜치, 포크 장단점 

원격저장소를 다수의 사람이 사용하는 경우, 새로 브랜치를 나누는 방법과 포크를 하는 방법이 있습니다. 

  브랜치 포크
의의 하나의 원본저장소에서 분기를 나눈다. 여러 원격저장소를 만들어 분기를 나눈다.
장점 하나의 원본저장소에서 코드 커밋 이력을 편하게 볼 수 있다. 원본저장소에 영향을 미치지 않아서 마음껏 수정해도 된다. 
단점 다수의 사용자가 다수의 브랜치를 만들면 관리하기 힘들다. 원본저장소의 이력을 보려면 따로 주소를 추가해야 한다. 

 

반응형