[Git]인프런_모두의 깃 & 깃허브

차보경·2023년 2월 4일
0

TIL

목록 보기
23/37
post-thumbnail
post-custom-banner

이제 Side Project며 인턴일이며 Git 사용할 일이 많을 것 같아 같이 공부하던 사람들끼리 스터디 얘기가 나온김에 마스터하려고 한다!!!
마스터보단... 준마스터겠지만😂😂

가보자고~~~


Git/Github/sourcetree란?

  • Git : 버전관리 시스템
    • 변경 내역들을 기억하며
    • 필요하다면 작업을 되돌리며
    • 여러명의 코드를 쉽게 나누고 합치며 개발하는 것
  • Git은 명령어로 진행됨 -> 쉽게 사용하기 위한것이 소스트리. 시각화가 좋음
  • sourcetree : 깃을 편하게 쓰기 위해 GUI를 제공한 것
  • Github : 원격 저장소(git으로 관리한 프로젝트를) 호스팅(관리해주는) 서비스
    • 개발자들의 SNS도 겸하고 있음(follow~)

기본 설정하기

  • git bash: git관련 명령어 사용 가능한 프로그램
- user name설정
git config --global user.name "Chabbo" 
- user email 설정
git config --global user.email "cbkyeong@gmail.com"

  • sourcetree도 설치 완료!

버전관리의 큰그림

  • Git이 관리하는 3개의 공간
    • 작업 디렉토리(working dir)
      : 버전관리의 대상이 위치하는 공간(.git이 있는 곳)
    • 스테이지
      : 다음 버전이 될 후보가 올라가는 공간
    • 저장소(Repo)
      : 버전이 만들어지고 관리되는 공간
  • 버전 관리 과정
    • 작업 디렉토리에 파일을 수정 (변경사항 생성)
      • 수정(수정, 생성, 삭제 등)한 모든 변경사항을 모두 버전으로 올리지 않아도 됨. (ex. 이번 버전을 위해 수정한 파일만 스테이지로 올림)
    • 버전으로 만들고 싶은 변경사항을 스테이지로 올림 add
    • 저장소에 올림 commit

소스트리 실습

  • 신규 파일 생성 후 소스트리에 들어가보면 신규 파일이 들어가있음
  • 스테이지에 올려줌
  • commit해줌 : 어떤 내용을 올리는지 같이 message를 작성해서 올려줌
    • 다른 개발자들의 message를 같이 하는게 좋음 (제목 1줄, 본문)

      브런치에 첫 commit이 된 것이 보인다.
    • 다른 내용을 추가해서 추가 커밋을 진행
    • 어떤 내용이 추가/삭제되었는지 보이고 제목, message가 보임!

커밋 해시/태그

Hash

  • 각각의 commit을 지칭하는 고유한 번호
  • 뒷부분만 사용해서 짧은 커밋hash를 사용하기도 함

Tag

  • 특정 커밋을 가독성 있게 사용하는 꼬리표같은 것.
  • 유의미한 커밋을 지칭하기 좋음. (Ex 출시 커밋엔 v.1.0.0 같은 버전을 붙여 사용)
  • Sourcetree로 해보기


    태그가 보이니까 확실히 시각적으로 눈에 띈다. 그리고 나중에 관련 얘기할 때도 "~~~ 태그된 commit 보면~ "같은 식으로 쉽게 얘기할 수 있을 것 같음

버전가지고놀기 하면 됨


브랜치는 나누어 관리하는 이유?

  • if 브랜치가 없다면?:

    • 각각 다른 기능을 추가한다면, 처음 A의 복사본을 다운받아 커밋을 하다보면 합칠 때, 일일이 어떤 부분을 수정했는지 대조하고 살펴봐야함
    • 다르게 수정한 부분이 혼재함. 일일이 수작업으로 합쳐야함. 그 과정 중 실수가 생길수도 있음
  • 브런치가 없다면? 222:


    • 이 C회사의 버전이 v10.0.0으로 요구사항이 1000개 이상 되었고, 각 버전별 요구사항이 다양함.
    • 이때 브런치가 없다면, 각 회사별/요구사항별로 일일이 나눠야함.
  • 브런치로 문제 해결하기

    • 브런치로 버전의 분기를 관리하는 방법
    1. 브런치를 나눈다
    2. 각자의 브런치에서 작업한다
    3. (필요하다면)나눈 브런치를 합친다
  • 기존 쇼핑몰 코드에서 브런치를 각자 나눠서 진행하면 됨.

    • 그럼 같은 코드를 다르게 수정한 부분만 Git이 알려줌.
      ->그부분만 확인하고 다른 사항은 확인하지 않아도 됨!
    • C회사의 버전에서도 버전별로 회사에 뿌리고 그 회사의 요구사항에 따라 브런치를 나누면 됨.

브랜치로 나눠 관리하기

브랜치 나누기

  • 브랜치는 버전을 여러개의 흐름으로 나누어 관리하는 방법!
  • 브랜치는 버전의 분기
  • 브랜치의 이름 : 최초의 브랜치, master 브랜치
    • master에 3개의 commit이 쌓여있고, cha 브랜치에 commit을 2개 했다면, cha 브런치에는 commit이 5개 쌓여있음.
    • 브랜치 이름은 어떻게 지어야하나?
      : 어떤 기능을 추가하기 위한 브랜치인지, 어떤 버전을 위한 브랜치인지, 등등 (release/2.3, feature/menu, 등등)
  • 특정 브랜치에서 작업하기 : HEAD와 체크아웃
    • HEAD
      • 현재 작업중인 브랜치의 커밋을 가리킨다
      • 일반적으로 현재 작업중인 브랜치의 최신커밋을 가리킨다
      • 한마디로 "내가 지금 어디에서 작업중인가"를 가리킨다
    • 만약 master 4번 커밋이 HEAD라면, 현재 작업엔 4개
    • 만약 master 3에서 나온 cha 브랜치의 2번째 커밋이 2개이고 그것이 HEAD라면, 현재 5개 커밋에서 작업중인것.
    • 체크아웃(Check out)
      • 특정 브랜치에서 작업할 수 있도록 작업환경을 바꿔주는 것
      • HEAD의 위치를 특정 커밋의 최신버전으로 바꿔주는 것

우선 1-3세션 들어본 중간결과,

  • Git에대해서 한번 정리하는 느낌
  • SourceTree 라는 GUI를 통해 브런치를 시각화해서 보기 편하다
  • 하지만 아직까진 터미널로 작업하는게 손에 익어서 기본적인건 터미널로 작업하지 않을까 싶다...?

그리고 SourceTree라는 프로그램을 사용해본 결과,
예전에 친구가 Fork라는 프로그램을 알려준 적이 있는데, 그거랑 유사한 프로그램같다.
(근데 찾아보니 SourceTree가 Jira만든 ATLASSIAN 이었네..ㅎ.ㅎㅎ.... fork가 이걸 따라했을수도..?)

브런치 시각화하기엔 짱인듯

담주까지 강의 끝내고, 스터디 사람들하고 같이 Git Repo가지고 브런치따고 리얼로 실험해보면서 익혀보자고 해야지~

profile
차보의 Data Engineer 도전기♥ (근데 기록을 곁들인)
post-custom-banner

0개의 댓글