1. Git 기본

최강일·2022년 10월 10일
0

Git

목록 보기
2/8
post-thumbnail

목차

  • git 기본
    • git
    • git repository
    • work tree & index
    • branch
    • git,github

git 기본

git이란

소스코드 버전 관리 시스템.
소스코드를 효과적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템'

최종.ppt,최최종.ppt,최종_추가2.ppt,진짜최종.ppt 과같은 경험은 대부분 있을 것이다.
그리고 구글시트처럼 원격의 문서를 여러 명이 수정하고 저장한다면 내용이 지워지거나 다른 작성자 영역에 영향을 줄 것 같은 불안감도 느껴봤을 것이다.
이런 문제를 해결해주는 sw가 git과 같은 버전 관리 시스템이다.

소스코드 변경 이력을 쉽게 관리하고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있다. 또한 충돌을 발생시켜 내용을 덮어쓰거나 유실되는 실수를 방지한다.

git repository

말그대로 저장소다. 작업물이 이력 별로 구분되어 저장된다.

원격(remote) vs 로컬(local) 저장소

  • remote : 저장소를 원격 서버에서 관리하여 여러 사람들이 함께 공유하기 위한 저장소
  • local : 내 로컬 PC를 뜻하는 개인 전용 저장소이다.

평소에는 내 PC의 local 저장소에서 작업하다가, 팀원들과 공유가 필요하면(배포,코드리뷰 등등) remote에 업로드한다.
물론 반대로 remote에 올려진 내용을 local로 받을 수 있다.

work tree(local) & index(stage)

  • work tree : 우리가 흔히 말하는 local 폴더를 뜻한다.
  • index : 저장소와 work tree 사이에 존재하는 공간이다. 커밋을 위해서는 변경사항들을 index에 올려야한다.

왜 local과 remote 사이에 index를 만들었나?

10개의 파일을 수정했지만 그 중에 7기만 저장소에 커밋하고 싶은 케이스를 생각해보자.
10개중 7개를 선택하는 작업이 바로 '인덱스에 등록' 또는 'stage'이다.

로컬환경에서 작업이 완료되면 공유가 필요한 파일만(index)에 올린다.

Branch

가지치기를 뜻하는데 사람,기능,이슈등 별로 새로운 가지를쳐서 작업을 진행하는 것을 의미한다.
이러한 branch안에서 commit,push,pull등의 작업을 진행한다.
추가로 만들어진 브랜치는 다른 브랜치와 병합함으로써, 작업 내용을 하나의 브랜치로 모을 수 있다.

branch를 사용하여 효과적으로 소스코드를 관리한다.

branch라는 개념이 없다면?

우리는 master라는 하나의 branch에서 여러명의 팀원들과 무수히 많은 push 요청 거절 또는 conflict를 경험해야한다.
각자 브랜치에서 작업을 진행하고, 사용자별로 한번의 merge만 수행하면 효율적이다.

Master branch(통합 브랜치)

repositroy를 처음 만들면, 'master'라는 이름의 브랜치를 만든다.
보통 실 서비스에 반영될 버전의 브랜치를 "통합 브랜치"라고도 한다.
주로 master branch를 통합 브랜치로 사용한다.

토픽 브랜치(feature branch)

기능 추가, 버그 수정과 같은 task 단위의 브랜치이다.
토픽 브랜치에서 특정 작업이 완료되면 다시 통합 브랜치에 병합하는 방식으로 진행된다.

통합,토픽 branch 외 효율적인 branch 운영 모델은 뒤에서 다룬다.
혼자 작업하는거나 단순한 구조라면 위 2가지 브랜치로만 사용해도 무방하다.

git,gitHub?

  • git
    • 오픈소스 버전 관리 프로그램
    • 로컬에서 버전,소스코드 관리에 사용
  • gitHub
    • git 기반의 개발 협업 플랫폼이다.
    • git repository를 관리하는 클라우드 기반 호스팅 서비스이다.
    • 로컬에서 버전관리한 소스코드를 업로드하여 공유
profile
Search & Backend Engineer

0개의 댓글