[TIL] Git 특강

Loopy·2023년 6월 3일
0
post-thumbnail

📝 회고

오늘은 진유림님께서 Git과 깃허브 특강을 해주셨다. 유튜브에서만 뵌 분의 특강을 들을 수 있어서 너무 영광이었다😍 평소에 소스트리에 익숙한데 Git GUI인 소스트리와 CLI방식을 동시에 실습해주셔서 CLI방식에도 관심을 가질 수 있었다. 또, 그림들을 이용한 git 협업방식은 새로운 내용(stash를 이제서야 알다니!!)들을 정말 쉽게 알 수 있게 해주셨다. 추가학습이 필요한 내용들은 진유린님의 인프런 강의를 통해서 더 보충해보자!

🔍 새롭게 배운 내용들

Git과 SVN의 차이점
Git Commit은 언제 해야하는게 좋은가요?
브랜치 종류 중 refactor과 feature의 차이
이슈 트래킹 시스템
git 명령어
git 외 꿀팁들

Git과 SVN의 차이점

Git과 SVN 모두 형상관리 도구다. 그렇다면 형상관리 도구가 무엇인가?

형상관리 도구
여러명이서 프로젝트를 할 때 각자 할일을 나눠 개발을 하게 되는데, 이때 각자가 개발한 코드들을 하나의 관리 도구에서 통합적으로 또는 버전별로 관리하게 되는것을 말한다.

그렇다면 차이점은?

  • Git
    • 분산관리식: 쉽게 말하면 로컬 PC에서 Commit을 하면 로컬 저장소에 먼저 반영이 되고 로컬저장소에서 Push 를 해야 원격저장소에 반영이 되는 방식이다.

    • 개발자 각자만의 Commit 히스토리를 가질 수 없어 문제 발생시 모든 local 히스토리를 탐색해야 하기 때문에 Git보다 느릴 수 밖에 없다.

  • SVN
    • 중앙집중식: 쉽게 말하면 로컬PC에서 Commit을 하면 중앙저장소에 바로 반영이 되는 방식이다.

    • 개발자 각자만의 Commit 히스토리를 가질 수 있으며 관리하기 편하다.

Git Commit은 언제 해야하는게 좋은가요?

최소 하나의 단위가 끝나면 Commit을 하는걸 추천한다.
다양한 맥락이 최대한 안섞이는 것이 중요하기도 하고 머리를 환기해줄 수 있다!
커밋 메세지 같은 경우 간결하게 적당히 추상화해서 적는 것이 중요하다.

브랜치 종류 중 refactor과 feature의 차이

  • feature: 새로운 기능을 개발하는 브랜치로 사용자가 마주하는 변화가 있는 경우를 말한다.
  • refactor: 코드를 리팩토링하는 기능의 브랜치로 사용자가 마주하는 변화가 없어야 한다는게 핵심이다.

이슈 트래킹 시스템

= 이슈를 생성하고 추적하고 관리하는 시스템

새로 알게 된 ITS 종류 Linear
Linear 공식 사이트
Jira도 좋지만 전반적으로 깔끔하고 심플한 UI를 원한다면 Linear도 좋은 것 같다!

git 명령어

  • switch : 브랜치를 변경하는 명령어로 쉽게 기존의 checkout을 떠올리면 된다. checkout만 알고 있던 나는 옛날사람...😢

  • amend: 깜빡하고 수정 못한 파일이 있어서 방금 만든 커밋에 추가하고 싶을 때 사용한다.

    amend 명령어를 편리하게 사용하기 위해서 각 feature 브랜치는 담당하는 개발자 혼자 사용하는 것이 좋다.

  • stash: 변경사항을 잠시 킵해두고 싶을 때 사용한다. 즉 쉽게 말하면 어떤 작업을 하고 있고 커밋은 하고 싶지 않은데 다른 브랜치에서의 작업이 요구되었을 때 stash를 사용하면 커밋을 하지 않고도 그 내용들을 킵해둘 수 있다.

  • reset: 옛날 커밋으로 브랜치를 되돌리고 싶을 때 사용하며 히스토리가 변경된다.
    --hard : reset 하기 전까지 한 모든 변경사항을 없앤다.

  • revert: 이전 커밋 내역들 즉 히스토리는 그대로 두고, 커밋을 되돌리고 싶을 때 사용한다.

  • cherry-pick: 어떤 특정한 커밋 하나만 떼서 현재의 브랜치에 붙이고 싶을 때 사용한다.

  • git reflog: git reset --hard된 히스토리 내역들을 확인 가능하다.

git 외 꿀팁 및 질문들

  • VSCODE - GitLens 확장 프로그램

진유림님의 실습과정을 보면서 발견하게 됐다. 협업을 할 때, 코드에 커서를 올리면 해당 커밋을 언제 누가 작성했는지 알려준다.

  • 코드리뷰
    장점: 내 코드를 논리적으로 설명 할 수 있게 되고 코딩 컨벤션이 비슷해져 다른 코드의 맥락을 파악할 수 있다.

    그렇다면 코드리뷰에서 선호하는 질문은?
    어떤 코드의 확장성에 대한 질문 또는 어떤 버그를 낼 수도 있는데 개선사항에 대한 질문

  • 신입 개발자에게 바라는 점이나 꿀팁

    • Javascript나 React에 대한 기본기가 있으면 좋고 문제 해결에 대한 끈질김이 있으면 좋다.
    • 디버깅한 회고를 노션 또는 블로그에 계속 작성하는게 좋다.
    • 사용자가 적어도 괜찮으니 단순한 개발용이 아니라 사용자와 함께한 환경을 가진 토이프로젝트가 있으면 좋다.
    • 핀테크 도메인쪽에 필요한 역량 : 장애가 나면 크리티컬한 분야이기 때문에 꼼꼼하고 엄밀하며 파고드는 성향이 중요하다.

📅 추가학습 Plan

  • Staging Area에 대한 개념을 더 공부해서 git 명령어인 reset의 hard,soft,mixed개념을 완벽하게 이해하는 것

참고 자료
진유림님의 Git 인프런 강의

0개의 댓글