Git 사용법 기초
Git이란?
Git은 분산 버전 관리 시스템(DVCS, Distributed Version Control System)으로, 코드를 안전하게 관리하고 협업을 효율적으로 할 수 있도록 도와줍니다. Git을 사용하면 프로젝트의 모든 변경 사항을 기록하고 필요할 때 특정 시점으로 되돌아갈 수 있습니다.
GitLab이란?
GitLab은 Git을 기반으로 한 원격 저장소 관리 서비스로, 프로젝트를 관리하고 협업할 수 있는 플랫폼입니다. GitHub과 유사하지만 자체적으로 호스팅할 수도 있으며, CI/CD 파이프라인 등 다양한 기능을 제공합니다.
참고:
Git != GitLab(GitHub)
- Git: 버전 관리 시스템 (로컬에서도 사용 가능)
- GitLab / GitHub: Git 저장소를 관리하는 원격 서비스
왜 사용할까?
장점
- 코드 변경 이력을 관리
- 특정 시점으로 쉽게 되돌아갈 수 있어 실험적 개발이 가능
- 여러 명이 동시에 같은 프로젝트에서 작업 가능
- 모든 코드 및 설정 파일(Terraform, Shell, Ansible, Vagrant 등) 관리 가능
단점
- 초기 학습 곡선이 존재하여 익숙해지는 데 시간이 걸릴 수 있음
- 협업 중 충돌(conflict)이 발생할 경우 해결해야 함
- Git을 사용하지 않는 팀원과의 협업이 어려울 수 있음
사전 작업
remote repository를 local 환경으로 clone하기 위해 개인 ssh key를 gitlab profile에 등록해야 합니다.

Git 사용법
- project 생성
- project clone
- branch 생성
- feature 개발
- push remote repository
- create merge request
- merge main branch

프로젝트 생성하기 (GitLab)
- "New Project" 버튼을 클릭합니다.
- 프로젝트 이름을 입력하고 Private 또는 Public 설정을 선택합니다.
- "Create Project" 버튼을 눌러 프로젝트를 생성합니다.
- 프로젝트 생성이 완료되면 로컬 환경에서 생성한 프로젝트를 클론합니다.
브랜치 생성 및 코드 작업
# 새로운 브랜치 생성 및 이동
# git checkout -b {생성할 branch name}
$ git checkout -b feature-a
Branch(브랜치)란?
브랜치는 독립적인 작업 공간입니다. 게임의 "세이브"처럼, 기존 코드(main 브랜치)를 유지한 채 새로운 기능을 개발하거나 버그를 수정할 수 있습니다.
변경 사항 저장 (Commit & Push)
# 변경 사항 확인
$ git status
# 변경 사항 스테이징
$ git add .
# 커밋 메시지 작성 후 저장
$ git commit -m "기능 추가"
# 원격 저장소로 푸시
# git push origin {target branch}
$ git push origin feature-a
브랜치 병합 (Merge)
merge는 한 브랜치의 변경 내용을 다른 브랜치로 통합하는 작업입니다. 주로 기능 개발이 완료된 브랜치를 main 브랜치에 합칠 때 사용합니다.
예를 들어, feature-a 브랜치에서 작업을 완료한 후 main 브랜치에 병합하면 feature-a에서 이루어진 모든 변경 사항이 main에 반영됩니다.
# main 브랜치로 이동
$ git checkout main
# feature-a 브랜치를 main에 병합
$ git merge feature-a
GitLab에서 Merge Request 생성 및 병합
- GitLab에서 생성한 브랜치를 선택합니다.
- 병합 대상 브랜치를 확인합니다. (source, target)
- "Merge Request" 버튼을 클릭하여 병합 요청을 생성합니다.
- 코드 리뷰 후 승인되면
Merge버튼을 글릭하여 main 브랜치로 병합합니다.
※ Merge 이후에도 브랜치를 계속 사용할 수 있지만 병합된 브랜치는 일반적으로 삭제합니다.
Git 설정 및 기본 명령어
Git 사용자 설정
# 사용자 정보 전역 설정
$ git config --global user.name "Your Name"
$ git config --global user.email "your.email@example.com"
# 사용자 정보 로컬(repository별로) 설정
$ git config --local user.name "Your Name"
$ git config --local user.email "your.email@example.com"
Branch 관련 명령어
# 현재 브랜치 확인
$ git branch
# 새로운 브랜치 생성
$ git branch feature-branch
# 브랜치 전환
$ git checkout feature-branch
# 새로운 브랜치를 생성하고 바로 이동
$ git checkout -b feature-branch
현재 상태 확인
$ git status
변경 사항 추가 (Staging)
$ git add <파일명>
$ git add . # 모든 변경 사항 추가
변경 사항 커밋하기
$ git commit -m "변경 사항 설명"
원격 저장소로 푸시하기
$ git push origin feature-branch
병합하기
$ git checkout main # target branch로 이동
$ git merge feature-branch # source(feature) branch
원활한 Git 사용을 위한 핵심
- main (master) 브랜치는 항상 최신 상태로 유지해야 합니다.
- 원격 저장소에 푸시하기 전에 반드시
git pull origin main을 실행하여 최신 상태인지 확인하세요. - 필요하지 않은 브랜치는 정리하여 저장소를 깨끗하게 유지하세요.
git commit -m "설명"시, 명확하고 간결한 커밋 메시지를 작성하세요.
목표
- 모든 코드를 Git을 사용하여 버전 관리(VCS)할 수 있도록 합니다.
- 개발자마다 로컬에 다른 코드가 존재하는 문제를 방지합니다.
- 동일한 기능을 중복해서 개발하지 않도록 하여 효율성을 향상시킵니다.