Divide and Conquer

[Github] 깃 버전 관리 방법 본문

2025/CICD

[Github] 깃 버전 관리 방법

10살 2024. 3. 13. 21:08
728x90

깃을 왜 써야 하지?

https://subscription.packtpub.com/book/programming/9781789137545/1/ch01lvl1sec11/introduction

다른 버전 제어 시스템 VCS와 달리, 파일이 변경되지 않으면 추적하지 않는다
= 변경된 파일에 대해서만 집중

https://git-scm.com/about/distributed

많은 개발자가 특정 부분을 담당하고 이를 병합하는 과정이 필요
> 동일한 서버에서도 잘 동작 

 

깃허브 ≠ 깃

https://www.elancer.co.kr/blog/view?seq=179

깃허브는 깃의 원격 저장소 Remote Repository를 클라우드 상의 외부 서버에 저장해 주는 사이트
깃은 프로그램 소스코드의 버전을 관리해 주는 오픈소스 소프트웨어 툴

 

깃의 일반적인 사용 흐름

https://optboy.github.io/github/2020/03/22/github.html
https://www.elancer.co.kr/blog/view?seq=179

작업영역은 실제 소스코드를 수정하는 공간 = 로컬 PC의 폴더와 파일
스테이징 영역은 작업 공간 내의 파일 중, 로컬 레포로 저장할 대상을 선택/저장하는 공간
로컬 레포가 깃 버전 관리를 하는 실제 Git 저장소
원격 레포는 다른 개발자와 코드를 공유하기 위해 로컬 레포와 동기화되는 원격 저장소 = 깃허브 등

https://brunch.co.kr/@doubleshot/1158
https://honglab.tistory.com/m/21?t_src=GNBlayer_kakaostory
https://velog.io/@jelkov/720-g

원격 저장소에 로컬에 있는 파일에 코드를 갱신하는 것을 push라고 하는데 
소스를 당기는 것은 pull
* 그러나 push의 반대 작업은 사실 fetch다!!!

 

깃 버전 관리 방법

지옥에서 온 깃:  https://www.youtube.com/watch?v=Ybx9JEuu7Hg&list=PLuHgQVnccGMA8iwZwrGyNXCGy2LAAsTXk&index=8

 

커밋 메세지 작성 규칙

feat	  새로운 기능에 대한 커밋
fix       버그 수정에 대한 커밋
build	  빌드 관련 파일 수정 / 모듈 설치 또는 삭제에 대한 커밋
chore	  그 외 자잘한 수정에 대한 커밋
ci        ci 관련 설정 수정에 대한 커밋
docs	  문서 수정에 대한 커밋
style	  코드 스타일 혹은 포맷 등에 관한 커밋
refactor  코드 리팩토링에 대한 커밋
test	  테스트 코드 수정에 대한 커밋
perf	  성능 개선에 대한 커밋

깃허브 커밋 메세지에 v1.1.1 이런식으로 버전 관리를 하던데 그럼 이건 뭐지?
위에서 본 것처럼 버전 관리 하는 줄 알았는데... < 보통 릴리즈할 때 Tag를 사용한다는데 비슷한 형태더라

 

태그 규칙

  • Lightweight Tag: 브랜치와 유사, 단순 특정 커밋에 대한 포인터
  • Annotated Tag: 태그를 만든 사람, 날짜,  메세지등을 자세하게 기록

 

시멘틱 버저닝 Semantic Versioning 

https://deepbaksu.github.io/2021/05/29/semantic-release/

소프트웨어 관리에는 의존성을 맞춰줘야 하는 문제가 있다
시맨틱 버저닝은 소프트웨어 패키지를 아래 규칙에 따라 버전 관리하는 것을 의미한다
시맨틱 버저닝의 자세한 내용은 다음 사이트를 참고한다 https://semver.org/lang/ko/

 

https://cluster-taek.tistory.com/entry/Git-Versioning-%EB%B0%8F-CHANGELOGmd-%EC%83%9D%EC%84%B1-%EC%9E%90%EB%8F%99%ED%99%94

{MAJOR}.{MINOR}.{PATCH}

MAJOR: 기존 버전과 호환X, 새로운 기능 추가
MINOR: 기존 버전과 호환O, 새로운 기능 추가 
PATCH: 기존 버전과 호환O, 버그 수정

https://breezymind.com/go-semantic-versioning/

 

GO에서도 이를 이용해 버저닝하는 것을 추천하는 것 같다

반응형
Comments