콘텐츠로 이동

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에 등록해야 합니다. add_ssh_key

Git 사용법

  1. project 생성
  2. project clone
  3. branch 생성
  4. feature 개발
  5. push remote repository
  6. create merge request
  7. merge main branch

git flow

프로젝트 생성하기 (GitLab)

  1. "New Project" 버튼을 클릭합니다.
  2. 프로젝트 이름을 입력하고 Private 또는 Public 설정을 선택합니다.
  3. "Create Project" 버튼을 눌러 프로젝트를 생성합니다.
  4. 프로젝트 생성이 완료되면 로컬 환경에서 생성한 프로젝트를 클론합니다.

브랜치 생성 및 코드 작업

# 새로운 브랜치 생성 및 이동
# 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 생성 및 병합

  1. GitLab에서 생성한 브랜치를 선택합니다.
  2. 병합 대상 브랜치를 확인합니다. (source, target)
  3. "Merge Request" 버튼을 클릭하여 병합 요청을 생성합니다.
  4. 코드 리뷰 후 승인되면 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)할 수 있도록 합니다.
  • 개발자마다 로컬에 다른 코드가 존재하는 문제를 방지합니다.
  • 동일한 기능을 중복해서 개발하지 않도록 하여 효율성을 향상시킵니다.