Java 웹 개발

[코드프레소 웹 개발 체험단] - 실무자가 알려주는 Git 활용한 프로젝트 관리

m_yell 2022. 1. 17. 03:21

 

- 코드프레소 Java 웹 개발 체험단 활동 중

- 코드프레소 이러닝 강의 수강 중 '실무자가 알려주는 Git 활용한 프로젝트 관리'

 

이 글은 코드프레소 Java 웹 개발 체험단 강의 중 '실무자가 알려주는 Git 활용한 프로젝트 관리' 강의 내용입니다.

 

 

  • 브랜치(branch) 

- 코드를 통째로 복사한 후  원래 코드에는 영향을 미치지 않고 독립적으로 개발을 진행하는 환경

- 최신 커밋을 가리키는 일종의 포인터

- 생성, 이동, 병합(merge)이 매우 쉽다.

- 매우 가볍다.

 

  • master 브랜치

- Git은 기본적으로 master 브랜치를 생성한다.

- master 브랜치는 첫번째 커밋을 만들어야 생성된 커밋을 가리킬 수 있다.

 

브랜치는 일종의 포인터 → 커밋을 가리킨다. 생성된 커밋이 없으면 현재 작업중인 브랜치를 알아보는 명령어를 쳤을 때 아무런 출력이 나오지 않는다.

 

  • HEAD

- 작업중인 현재 로컬 브랜치를 가리키는 일종의 포인터.

- HEAD가 가리키는 것은 현재 브랜치의 가장 최근 커밋

- 현재 브랜치의 마지막 커밋에 대한 스냅샷

HEAD가 다른 브랜치를 가리킨다면 작업 브랜치가 변경되었다는 의미

 

  • 브랜치 생성
$ git branch [생성할 브랜치명]

 

  • 브랜치 이동
$ git checkout [이동할 브랜치명]

 

* git bash창에서 민트 글씨 부분이 현재 브랜치를 가리킴

 

  • 브랜치 이동(checkout)

- HEAD는 checkout 대상 브랜치로 이동한다.

- 로컬저장소의 상태는 HEAD가 가리키는 마지막 커밋이 최신이 되고, 작업 디렉토리의 파일 상태도 변경된다.

 

  • 브랜치와 상관없이 모든 커밋을 보고싶을 때
$ git log --all
$ git log --a;; --graph

# --graph : 분기별로 어떻게 이루어져있는지 그래프 형식으로 볼 수 있는 옵션

 

* 개발 중 이슈가 발생하면?

'issue'라는 브랜치를 생성해 이슈를 해결

 

  • 브랜치 생성과 checkout 동시에 하는 명령어
$ git checkout -b  [생성할 브랜치이름]

 

* 이슈 브랜치에서 문제점이 해결되면 해당 변경점들이 master 브랜치와 다시 합병이 되어야 수정된 사항들이 고객들이 전달한 최종 코드에 적용이 된다.  → 브랜치 합병, 'merge한다.'라고 한다.

 

* 브랜치 병합(merge)는 기준이 되는 브랜치로 이동해서 병합해야 한다.

 

  • 브랜치 병합
$ git merge [합쳐질 브랜치이름]

 

* 사용하지 않는 브랜치는 삭제하는 게 좋다.

 

 

  • 각각의 브랜치들이 어떤 커밋을 가리키는 지 볼 때 
$ git branch -v

 

  • 브랜치 삭제
$ git branch -d [삭제할 브랜치명]

 

  • Merge 방식

1) Forward Merge

2) 3-way Merge 

 

* 브랜치 병합이 항상 성공하진 않는다.

 

  • 변경사항의 충돌(conflict) : 2개의 변경점이 합쳐질 때 변경점 자체가 충돌하는 상태
  • conflict 해결 방법

1) 직접 해당 충돌이 발생한 파일을 열어 수정

2) 툴을 이용해서 merge하기

# 2번 방법

$ git mergetool

 

[Tip] vimdiff 입력시 에러 발생하면 아래 명령어 설정 후 재시도

$ git config merge.tool vimdiff

 

  • Git에서 태그

- 특정 브랜치 위에서 생성되고 특정 시점에 태그가 생성

- 태그는 특정 시점의 소스코드 정보를 기록함

- 프로젝트 진행 중 의미있는 시점의 커밋을 태깅한 것

- 의미있는 시점은 개발자마다 다르다.

 

  • Git 태그의 종류

- Lightweight 태그 : 버전명과 같은 태그명만 남기는 태그

- Annotated 태그 : Git 데이터베이스에 태그를 만든 사람의 이름, 이메일, 태그 생성 날짜, 태그 메시지 등을 저장한 태그

 

  • Git 태그 생성하기
# Lightweight 태그
$ git tag [태그명]

# Annotated 태그
$git tag -a[태그명] -m[태그 메시지]

 

 

 

- 코드프레소 URL : https://www.codepresso.kr/ 

 

프리미엄 IT 교육 서비스 - 코드프레소

 

www.codepresso.kr