[Git] 5~6강까지의 내용 정리

bacccine·2022년 4월 6일
0

Git

목록 보기
3/4

소프트웨어 버전 관리 & Tag & branch 관리전략부터 Git 명령어(merge, conflict, amend, stash)

소프트웨어 버전 관리

  • 일반적으로 Major, Minor, Patch 3개의 구분 기호를 통해 버전을 관리
    예시)
    v2.4.1 일 때
    2 → 대규모 기능 추가 등 Major 업데이트가 이루어질 때 변경
    4 → 세부 기능 추가 등 Minor한 업데이트가 이루어질 때 변경, 자주 변경이 일어남
    1 → 버그 패치 등의 사소한 변경이 이루어질 때 변경

소프트웨어 버전명 기록하기

  • 버전관리를 위해선 각 버전에 대한 기록이 필요하다
  • 배포를 할 때마다 해당 버전 시점의 소스코드를 잘 기록해두어야 한다
  • 명확한 목적성을 가지고 해당 시점의 코드를 기록해두는 것
  • 현재 소스코드 상태에 대한 기록 생성을 위해선 git tag -a 태그명

생성된 tag 확인하기

git tag -l

생성된 tag 원격 저장소에 반영하기

git push origin 태그이름

tag 삭제하기

git tag -d 태그이름

원격저장소 tag 삭제하기

git push origin :태그이름

Branch 생성 전략 - Git Flow

  • branch를 마구잡이로 생성하다 보면 관리가 안 되기 때문에 branch를 어떻게 만들지에 대한 전략이 필요하다
  • Git Flow는 5개의 branch를 이용해서 개발을 진행한다
    (1) master 제품으로 출시될 수 있는 브랜치
    (2) develop 다음 출시 버전을 개발하는 브랜치, master 브랜치에서 파생된 것
    (3) feature 기능을 개발하는 브랜치, develop 브랜치에서 파생된 것
    (4) release 이번 출시 버전을 준비하는 브랜치, develop과 feature의 내용을 release에 반영
    보통 QA 작업이 이때 진행된다. QA도 완료된다면 이를 버전 tagging 후 다시 master에 반영
    (5) hotfix 출시 버전에서 발생한 버그를 수정하는 브랜치

◎ master 브랜치에서 시작 → 동일한 브랜치를 develop에도 생성, 개발자들은 develop 브랜치에서 개발을 진행
→ 개발을 진행하다 기능 구현이 필요한 경우 개발자는 develop 브랜치에서 feature 브랜치를 하나 생성해서 구현
→ 완료된 feature 브랜치는 검토를 거쳐 다시 develop 브랜치에 합친다(merge) → 모든 기능이 완료되면 develop
브랜치를 release 브랜치로 만든다. QA를 하면서 보완점을 보완하고 버그를 픽스한다 → release 브랜치를 master,
develop 브랜치로 보낸다. master 브랜치에서 버전추가를 위해 tag를 하나 생성하고 배포 → 배포를 했는데 버그가
있을 경우 hotfixes 브랜치를 만들어 긴급 수정 후 태그를 생성하고 수정 배포

소프트웨어 출시 과정

신규 기능(feature) 개발 → 신규 기능들을 모아서 새로운 version 생성 → QA를 통해 문제 없는지 검증
→ 문제가 없다면 해당 version 을 release

Git의 원리

  • git은 내부적으로 working directory, staging area, repository로 파일을 관리한다
  • working directory는 현재 작업을 하고 있는 git 저장소를 의미, 변경내역이 추적되지 않는다
  • working directory 내 특정 파일에 대한 추적 명령이 git add
  • git add가 수행되면 해당 파일은 working directory에서 staging area(논리적 공간)로 옮겨진다
  • 이를 최종적으로 repository에 반영하는 것은 git commit

두 개의 branch 내용을 합치기

  • 독립적으로 개발되던 2개의 branch에 있는 내용을 merge를 이용해서 합칠 수 있다
  • 먼저 합칠 대상이 되는 branch로 이동 git checkout 브랜치명
    → 합치고 싶은 명령어 지정 git merge 브랜치명

두 개의 branch를 합치는 과정에서 발생한 conflict

  • 2개의 branch에서 동일한 파일을 수정한 뒤 commit 후 이를 merge할 경우 conflict이 발생할 수 있음
  • conflict가 발생할 경우 수동으로 해결해서 새로운 commit을 만들어줘야 한다

이전 commit 내역 수정하기

  • 실수로 commit에 포함시켜야 할 내용을 빠뜨린 경우 amend 옵션을 이용해서 이전 내용에 새 내용을 추가 가능
  • git commit --amend

변경 사항을 잠시 keep하기

  • 특정 branch에서 작업을 진행 중에 다른 branch에서 작업을 요청받는 경우 해결 방법이다
  • 이 때 작업하던 내역을 commit하기 애매할 경우 변경사항을 잠시 keep 하기 위해 git stash 명령을 사용
  • stash save를 하면 지금까지 작업했던 파일이 임시 저장소에 보관되어 사라지는 것을 볼 수 있다
  • 명령어
    (1) 작업 내역을 stash에 저장 git stash save
    (2) stash에 저장된 내용 보기 git stash list
    (3) stash에 저장해놨던 내용 가져오기 git stash pop

0개의 댓글