모두의 깃, 깃허브

park·2022년 11월 20일

깃이 없으면?
1. 변경 내역 확인이 어렵다
2. 작업을 되돌리기 어렵다
3. 협력하기 어렵다

변경사항(버전)을 조금 더 일목요연하게 관리해보자

버전 관리를 위한 도구, GIT

버전 = 유의미한 변화가 결과물로 나온 것
프로그램 개발 = 유의미한 변화를 쌓아 프로그램을 만들어나가는 것

버전 관리
1. 변경 내역들을 기억하며
2. 필요하다면 작업을 되돌리며
3. 여러 명의 코드를 쉽게 나누고 합치며 개발하는 것!

소스트리- 깃을 조금 더 쉽고 시각적으로 관리할 수 있는 도구

깃 허브-
원격 저장소 호스팅 서비스
원격(인터넷 상에서) 깃으로 관리한 프로젝트들을 호스팅(관리해주는) 서비스

저장소 - 깃으로 버젼을 관리할 수 있는 공간

<깃이 관리하는 세 개의 공간>

  1. 작업 디렉터리(워킹 디렉터리)→ 버전 관리의 대상이 위치하는 공간(.git이 있는 디렉터리)

  2. 스테이지(깃이 관리하는 가상의 공간)→ 다음 버전이 될 후보가 올라가는 공간/인덱스

  3. 저장소(깃이 관리하는 가상의 공간)→ 버전이 만들어지고 관리되는 공간

작업 디렉토리에서 스테이지로 올리는 것을 add한다. 스테이지 한다.
스테이지에서 저장소로 올리는 것을 commit한다.

각각의 버전들을 지칭할 수 있는 정보, 부여된 고유의 정보를 커밋해시라고 한다.

태그는 특정 커밋을 조금 더 가독성 있게 지칭할 때 사용

만들어진 버전을 되돌리는 두 가지 방법

  1. revert(버전을 되돌린 새로운 버전 만들기)

    지금까지 만든 버전은 건드리지 않고 새로운 버전을 만들고 싶다.
  1. reset(버전을 완전히 되돌리기)
    • soft
    • mixed
    • hard

하나의 버전이 만들어 지는 과정

  1. 작업 디렉터리에서 변경 사항 생성하기(hard reset)- 작업 디렉터리까지 되돌리기
  2. 스테이지로 추가하기(mixed reset)- 스테이지까지 되돌리기
  3. 저장소로 커밋하기(soft reset)- 커밋만 되돌리기



스테시- 내가 작업한 내용을 임시 저장한다.


브랜치로 나누어 관리하기


브랜치는 버전의 분기

브랜치가 없다면?

  • 서로의 작업과 전혀 과련 없는 부분, 같은 코드를 다르게 수정한 부분 혼재
  • 일일이 수작업으로 합쳐야 함
  • 때로는 서로의 코드를 합치다 실수가 생길 수도

브랜치로 버전의 분기를 관리하는 방법
1. 브랜치를 나눈다
2. 각자의 브랜치에서 작업한다.
3. (필요하다면) 나눈 브랜치를 합친다.


HEAD와 체크아웃

HEAD

  • 현재 작업 중인 브랜치의 커밋을 가리킨다
  • 일반적으로 현재 작업 중인 브랜치의 최신 커밋을 가리킨다
  • 한 마디로 "내가 지금 어디에서 작업 중인가"를 가리킨다.

체크아웃(checkout)

  • 특정 브랜치에서 작업할 수 있도록 자업 환경을 바꾸는 것
  • HEAD의 위치를 특정 브랜치의 최신 커밋으로 옮김

브랜치를 합친다 = 브랜치를 병합(merge)한다
브랜치 내용이 업데이트되는 병합 기법을 빨리감기 병합(fast-forward merge)라고 한다.


충돌: 병합하려는 두 브랜치가 서로 같은 내용을 다르게 수정한 상황

어떤게 반영될지는 GIT도 모른다. GIT에서 충돌을 알려주면 본인이 C를 선택할지 B를 선택할지 결정해야 한다.

충돌 대처법
1. 충돌을 해결한다.(어떤 브랜치의 내용을 반영할지 직접 선별한다)
2. 다시 커밋한다.


브랜치의 재배치 (리베이스)

0개의 댓글