Maximize Your Potential

BackEnd

[Python BootCamp] Git: 소스 코드 관리의 필수 도구

maxworld 2024. 8. 16. 10:17
728x90
반응형

Git: 소스 코드 관리의 필수 도구

1. Git이란 무엇인가?

Git은 소스 코드 관리 시스템으로, 소프트웨어 개발에서 소스 코드의 변경 사항을 추적하고 버전을 관리할 수 있게 해주는 도구입니다. 분산 버전 관리 시스템(DVCS)으로, 프로젝트의 모든 히스토리를 로컬에 복사하여 독립적으로 작업할 수 있게 합니다. Git은 오픈 소스 프로젝트부터 대규모 엔터프라이즈 프로젝트에 이르기까지 널리 사용되고 있습니다.

1.1 Git의 주요 특징

  • 분산형 구조: 중앙 서버에 의존하지 않고, 로컬 저장소에서 모든 작업이 가능.
  • 빠른 성능: 변경 사항을 추적하고, 병합 작업이 매우 빠름.
  • 강력한 브랜치 관리: 브랜치와 병합이 효율적이며, 다양한 워크플로를 지원.

2. Git의 기본 개념

2.1 저장소(Repository)

저장소는 프로젝트의 소스 코드와 이력 데이터를 저장하는 곳입니다. 로컬 저장소와 원격 저장소가 있으며, GitHub와 같은 서비스는 원격 저장소를 호스팅합니다.

2.2 커밋(Commit)

커밋은 변경 사항을 저장하는 스냅샷입니다. 커밋에는 변경된 파일, 변경된 내용, 그리고 변경을 설명하는 메시지가 포함됩니다.

2.3 브랜치(Branch)

브랜치는 독립적으로 작업을 진행할 수 있는 분기입니다. 주로 main 또는 master 브랜치를 사용하며, 새로운 기능을 추가하거나 버그를 수정할 때 새로운 브랜치를 생성하여 작업한 후 다시 main 브랜치에 병합합니다.

2.4 병합(Merge)

병합은 한 브랜치의 변경 사항을 다른 브랜치로 통합하는 과정입니다. 일반적으로 기능 개발이 완료된 후, 해당 기능이 추가된 브랜치를 main 브랜치에 병합합니다.

3. Git 설치 및 초기 설정

3.1 Git 설치

Git은 대부분의 운영 체제에서 설치할 수 있습니다.

  • Windows: Git for Windows에서 다운로드하여 설치.
  • macOS: 터미널에서 brew install git 명령어로 설치.
  • Linux: 터미널에서 sudo apt-get install git 명령어로 설치.

3.2 초기 설정

설치 후, 다음 명령어를 통해 사용자 이름과 이메일을 설정합니다.

git config --global user.name "Your Name" 
git config --global user.email "your_email@example.com"
 

이 설정은 모든 Git 커밋에 적용됩니다.

4. Git의 기본 명령어

4.1 저장소 초기화

새로운 프로젝트를 시작할 때는 다음 명령어로 Git 저장소를 초기화합니다.

git init

4.2 파일 추가 및 커밋

파일을 추가하고 커밋하여 변경 사항을 저장합니다.

git add . 
git commit -m "Initial commit"

4.3 원격 저장소 연결

GitHub와 같은 원격 저장소와 연결하여 변경 사항을 푸시할 수 있습니다.

git remote add origin https://github.com/your_username/your_repository.git 
git push -u origin main

4.4 브랜치 관리

새로운 브랜치를 생성하고 해당 브랜치로 전환합니다.

git checkout -b feature_branch

4.5 병합 및 충돌 해결

작업이 완료된 브랜치를 main 브랜치에 병합합니다.

git checkout main git merge feature_branch

병합 중에 충돌이 발생할 수 있으며, 이 경우 충돌을 수동으로 해결한 후 커밋합니다.

5. Git의 기타 기능

5.1 리베이스(Rebase)

리베이스는 브랜치의 변경 이력을 다시 작성하여 깔끔한 히스토리를 유지할 수 있게 합니다. 예를 들어, feature_branch를 main 브랜치에 리베이스하는 방법은 다음과 같습니다.

git checkout feature_branch git rebase main

5.2 태그(Tag)

태그는 특정 커밋에 대한 체크포인트를 만듭니다. 주로 릴리스 버전을 지정할 때 사용됩니다.

git tag -a v1.0 -m "Version 1.0" git push origin v1.0

5.3 Git의 역사 정리: git prune 및 git gc

Git을 장기간 사용하다 보면, 불필요한 객체가 쌓여서 저장소가 비대해질 수 있습니다. 이때 git prune과 git gc 명령어를 사용하여 저장소를 정리할 수 있습니다.

git prune 
git gc --aggressive --prune=now

5.4 Git 상태관리방법

Git은 상태에 따라 Untracked와 Tracked로 분류됩니다.

 

변경사항 확인하기

git diff

 

커밋 히스토리 조회하기

git log

5.4 Git 상태관리방법

6. Git 사용 시 자주 발생하는 문제와 해결 방법

6.1 브랜치 병합 충돌

브랜치를 병합할 때 충돌이 발생하면, Git은 자동으로 병합할 수 없는 파일을 표시합니다. 이 경우 해당 파일을 열어 충돌을 해결하고 커밋합니다.

6.2 "refusing to merge unrelated histories" 오류

서로 관련 없는 두 개의 저장소를 병합하려고 할 때 발생하는 오류입니다. 이 문제는 다음 명령어로 해결할 수 있습니다.

git pull origin main --allow-unrelated-histories

6.3 "Updates were rejected because the tip of your current branch is behind" 오류

이 오류는 로컬 브랜치가 원격 브랜치보다 뒤처져 있을 때 발생합니다. 해결 방법은 다음과 같습니다.

git pull --rebase origin main

또는 강제로 푸시할 수도 있습니다.

git push origin main --force

7. Git의 협업 워크플로우

Git은 협업 도구로서 매우 강력합니다. 팀 프로젝트에서 Git을 사용하는 경우, 다음과 같은 워크플로우를 자주 사용합니다.

Git Flow는 브랜치 관리 전략으로, 기능 개발, 릴리스 준비, 버그 수정 등의 작업을 위한 고유한 브랜치를 사용합니다.

7. Git의 협업 워크플로우
7. Git의 협업 워크플로우

Git은 소프트웨어 개발에서 필수적인 도구입니다. 이 블로그 글에서는 Git의 기본 개념부터 고급 기능까지를 다루었습니다. Git을 잘 활용하면 소스 코드 관리를 효율적으로 할 수 있으며, 협업도 원활하게 진행할 수 있습니다. 지속적인 학습과 실전 경험을 통해 Git에 대한 이해를 높여보세요.