본문 바로가기

책 리뷰/개발 서적

박미정의 깃&깃허브 입문 리뷰

728x90
[박미정의 깃&깃허브 입문]
저자 : 박미정
발매 : 2021.09.13

이 책을 읽게 된 계기는 개발자에게 있어서 협업은 필수인데. 나는 git과 github를 어느 정도 알 뿐, 자세히는 모르고 협업을 해본 적이 없어서 나의 부족한 점이라 생각해 읽게 되었다. 그리고 내 판단은 옳았다. 

 

이 책은 기본적인 git 명령어를 알려줄 뿐만 아니라 프로젝트 협업 시나리오로 동료들과의 협업을 어떻게 하는지 생생하게 적용하고, 간접적으로 체험할 수 있었다. 저자분께서 쉽게 잘 설명해주셔서 깃&깃허브 스킬을 빠르게 획득할 수 있었다. 

 

출처: 알라딘

책에서 배운 내용들 - 

 

1단계 

깃과 깃허브의 설명과 git init으로 git 시작.

git config로 사용자 등록.

git add에 파일을 등록하고, git commit으로 변경 내용 적용하기.

git remote add [원격 저장소]로 원격 저장소를 등록하고, git push [원격 저장소]  [브랜치]로 github에 올리기.

 

이외에도 깃의 기본 명령어와. gitignore 파일 설정. 작업 디렉터리와 스테이징 영역 상태를 알 수 있었다. 

 

그리고 시나리오를 통해 이전에 배웠던 명령어와 지식들을 활용해서 머릿속 지식들을 활용할 수 있는 능력을 길러주었다. 

 

2단계 

2단계에서는 협업을 위한 깃허브 기능을 알 수 있었다. 

 

나는 맨 처음에 깃허브의 이슈가 뭔 역할인지 몰랐다. 그러나 실습을 통해 새로운 기능, 오류 해결 등의 작업을 할 때 이슈 단위로 작성하고 관리할 수 있음을 알게 되고 이를 적용했다. 그리고 프로젝트 탭에서는 이슈를 추가하는 방법과 이슈 상태를 변경하는 방법을 알게 되었다. 

 

브랜치가 무엇인지 정확히 알게 되었고, 협업을 할 때 브랜치가 필수임을 인식하였다. 브랜치의 여러 기능들과 브랜치 병합 방법을 알게 되었는데 아래는 병합 방식을 설명하였다. 

 

(1) 빨리 감기 병합(fast forward)은 기준 브랜치에 작업 브랜치의 새로운 커밋이 단순히 최신 커밋으로 더해지고, 기준 브랜치가 바라보는 최신 커밋만 변경된다.

 

(2) 병합 커밋 생성(merge commit)은 기준 브랜치에 변경이 존재하는 경우에 사용하는 방법이다. 즉 양쪽의 변경 내용을 하나로 합치는 과정이다. 

 

이런 branch 병합에도 문제가 있다. 두 명 이상의 각자 작업 브랜치에서 동일한 코드를 수정한 후 이를 병합할 때 충돌이 발생한다. 이럴 경우 충돌이 일어나는 부분 중에 어느 한 부분을 선택해야 함을 깨닫게 되었다. 그러나 이 부분은 권장되지 않는다는 사실을 알게 된다. 변경 내역에 대한 동료들의 피드백 없이 기준 브랜치에 병합하는 일은 위험할 수 있다는 것. 

 

이를 개선하기 위해 깃허브의 풀 리퀘스트 기능을 통해 동료들에게 브랜치 병합 예정인 변경 내역 검토를 요청할 수 있다는 사실을 처음 알게 되었다. 그리고 실습을 통해 어떻게 하는 방식인지 습득했다. 

 

시나리오를 통해 위의 방식들을 복기했고, 자신의 것으로 만들게 되었다.

 

 

3단계 

3단계에는 깃허브 액션을 대략적으로 알게 되었다. 작업 주기를 자동화하는 도구였던 것. 이에 대한 간단한 실습을 했다.

 

또한 클라우드 서비스를 대상으로 배포 설정 시 어떤 내용이 필요한지 간략하게 알게 되었다. 코드를 빌드하고 배포를 자동화하는 방법을 얇게 알게 되었는데, 나중에 토이 프로젝트를 실시할 때 본격적으로 공부하면서 적용할 예정이다. 

 

이외에도 git rebase와 cherry-pick 방식. 이전 커밋으로 되돌리는 reset과 revert의 차이를 알게 되었다. reset은 취소하는 커밋 자체를 커밋 이력에서 제외하지만, git revert는 변경 사항을 되돌렸다는 새로운 커밋을 커밋 이력에 생성했던 것. 협업을 할 때는 가급적 git revert를 사용한다는 걸 인지했다.

 

 VS code의 기능으로 CLI를 사용하지 않고, 간단히 깃허브의 코드를 clone 하고 push, pull 하는 실습을 하였다. 이건 내 개인 프로젝트를 할 때 써본 적이 있어서 이미 알고 있는 내용이었다. 

 

출처:freepik

책의 실습을 하면서 느낀점: 

 

이 책을 읽기 전에는 대략적이나마 깃의 기능만 알고, 이를 적용했었다. 지금은 브랜치를 merge 할 때 왜 충돌이 일어나는지 등. 문제를 직면했을 때 어떻게 대처해야 할지 알게 되었다. 사실 깃이 어렵다고 생각을 하고, 어느 정도의 기능만 써오고 깊게 알기를 계속 피했었다. 그런데 책 내용을 실습해보니 생각보다 쉬웠고, 깃의 고급 기능을 만나도 해결해 나갈 자신이 생겼다.

 

지금은 영상이 삭제돼서 못 보지만, 구글 시니어 UX 김종민 엔지니어님께서도 나와 비슷한 경험을 하신 적이 있다. 영상에서는 자신이 지도 기능이 어렵다고 생각해서, 계속 현업에서 이를 피했다고 한다. (예전 기억이라 틀린 부분이 있을 수도 있다.) 그런데 현업에서 어쩔 수 없이 자신이 해야 할 경우가 생겼고. 이와 관련된 자료를 찾아보고, 자신이 직접 해보니 생각보다 쉽다는 것을 알게 됐다고 한다. 이런 대단한 사람도 나와 같은 해프닝이 있었다니 생각조차 못했다. 

 

무엇보다 MIT 출신 천재 개발자가 CSS를 몰라서, 자신에게 해 달라고 요청을 했을 때 큰 충격을 받았다고 한다. 당시 CSS를 적용한 문제도 쉬운 것이었다. 그리고 이전의 나의 사례와 MIT 개발자 사례를 겪고, 깨달음을 얻게 되었다고 한다. '모르는 것이 있으면 두려워 하지 말고, 직접 해보면 막상 별거 아니다'라는 조언을 해주신 적이 있다.

 

내가 기본적인 기능만 해서 그런지 몰라도 깃과 깃허브가 생각보다 쉽고, 책 내용을 따라 해 나의 것으로 만들 수 있었다. 현업에서 모르는 기능이 나와도 피하지 말고, 직접 나서서 해봐야겠다는 생각을 갖게 됐다. 

 

 

※ 1,2,3 단계를 적용한 나의 깃 실습 링크

 

728x90