WEEK 7-6: Git

ensalada.de.pollo·2025년 5월 25일

be

목록 보기
42/44

충돌

여러 명이 동시에 같은 파일의 같은 부분을 수정하면, Git은 어떤 변경을 적용해야 할 지 스스로 결정하지 못해 충돌이 발생하게 됩니다.

PR 과정 뿐만 아니라, git pull 등으로 코드를 병합할 때에도 발생할 수 있습니다.

해결

  1. 충돌이 발생하면 Git은 CONFLICT 메세지와 함께 충돌된 파일의 위치를 표시합니다.
  2. 충돌을 해결한 뒤 git add 파일명으로 변경을 스테이징합니다.
  3. git rebase --continue를 실행해 rebase 과정을 이어갑니다.
  4. 충돌이 여러 번 발생하면 이 과정을 반복합니다.

해결 후 상태 확인

git log를 확인해보면, rebase로 인해 기존 커밋의 해시가 달라지고, history가 일직선으로 정리됩니다. rebase는 커밋을 다시 쌓기 때문에, 같은 내용이라고 커밋 해시가 새로 생성됩니다.

히스토리 관리

  • commit --amend: 가장 최근 커밋의 메세지나 파일을 수정할 때 사용합니다. 커밋을 새로 만드는 대신 기존 커밋을 덮어씁니다.
  • rebase -i (interactive): 커밋을 쪼개거나, 여러 개를 하나로 합치기 등 커밋 히스토리를 세밀하게 재구성할 수 있습니다.

이미 원격 저장소에 푸시된 커밋에 대해 해당 히스토리 변경 작업을 수행하면 협업에 심각한 문제가 발생할 수 있습니다. 그렇기 때문에 로컬 작업 또는 공유 전 브랜치에서만 사용해야 합니다.

Tag

특정 커밋을 스냅샷처럼 고정해 버전으로 명명하는 기능입니다.
브랜치가 작업 흐름을 관리한다면, 태그는 중요한 시점을 영구적으로 표시합니다.
태그는 한 번 지정하면 위치가 변하지 않습니다. 그렇기 때문에 주로 릴리즈나 롤백 시점 관리에 사용합니다.

Release

태그를 기반으로 실제 사용자에게 배포되는 버전과 그에 대한 설명을 기록하는 Github 공식 기능입니다. Release note에는 주요 변경점, 버전, 업데이트 방법, 알려진 이슈, 기여자 등의 정보를 포함해 팀원 및 사용자에게 중요한 정보를 제공합니다.

0개의 댓글