4회차: 25/01/09 19:00 ~ 22:00
장소: ZOOM
계획: 24년 동계 모각코
스터디 주제 : Release : 완성된 프로젝트 출시
스터디 목표 : 완성된 프로젝트를 출시하는 방법 학습하기
태그(tag)란?
태그는 특정 커밋을 가리키는 "이름표" 같은 것임. 브랜치처럼 특정 커밋을 가리키지만, 브랜치와 달리 태그는 고정되어 있음. 즉, 브랜치는 커밋이 추가되면 최신 커밋을 따라가지만, 태그는 한 번 생성되면 그 커밋에 영구적으로 남아있음.
주로 릴리즈 버전을 관리하거나 중요한 커밋에 표시를 남길 때 사용함. 예를 들어, v1.0, v2.0 같은 릴리즈 태그를 만들면 특정 버전에 쉽게 접근할 수 있음.
git tag 명령어로 태그를 생성할 수 있음. 주로 -a(주석 태그) 옵션을 사용해서 메시지와 함께 태그를 생성함. 브랜치 이름이나 커밋 체크섬을 명시하지 않으면 HEAD(현재 작업 중인 커밋)에 태그가 붙음.
$ git tag -a -m "<메시지>" <태그명> [브랜치명 또는 체크섬]
예시
# 커밋 로그 확인
$ git log --oneline
3d94a73 (HEAD -> master, origin/master, origin/main, main) add asynciotest
8aa7e99 init
# 태그 생성
$ git tag -a -m "첫 번째 릴리즈" v1.0
위 명령으로 v1.0이라는 태그가 HEAD에 생성됨. 이제 커밋 로그에서 태그를 확인할 수 있음.
$ git log --oneline
3d94a73 (HEAD -> master, tag: v1.0, origin/master, origin/main, main) add asynciotest
8aa7e99 init
태그는 로컬에서 생성되므로, 원격 저장소로 푸시해야 다른 사람이 확인 가능함.
$ git push <원격저장소 별명> <태그명>
예시
$ git push origin v1.0
결과
To https://github.com/username/repo.git
* [new tag] v1.0 -> v1.0
git fetch는 원격 저장소의 최신 커밋 이력을 로컬로 가져오는 명령어임. 코드는 변경하지 않고 커밋 기록만 업데이트하므로, 작업 중인 코드에 영향을 주지 않음.
fetch와 pull의 차이
$ git fetch <원격저장소 별명>
예시
$ git fetch origin
이 명령어를 실행하면 원격 저장소의 브랜치와 커밋 이력이 로컬 저장소에 동기화됨. 그러나 워킹 트리는 변경되지 않음.
fetch 후 작업
동기화된 커밋을 확인하려면 git log로 원격 브랜치 상태를 확인할 수 있음.
$ git log origin/main
fetch 이후 원하는 브랜치로 이동하려면 git checkout 명령어를 사용하거나 git pull로 최신 상태를 병합해야 함.
1. 원격 저장소의 최신 상태 가져오기
$ git fetch origin
2. fetch 이후 로그 확인
$ git log origin/main
3. fetch 후 병합
fetch 후 최신 상태를 워킹 트리에 반영하려면 merge를 사용해야 함.
$ git merge origin/main
4. fetch와 pull 비교
fetch를 통해 원격 저장소의 상태를 먼저 확인하고, 필요할 경우 수동으로 병합.
pull은 fetch와 merge를 한 번에 실행하여 자동으로 병합.
