프로젝트/Git

Git/Github - 제대로 사용하는 방법

upstack 2026. 9. 22. 17:44

Git과 GitHub의 개념 및 초기 설정

개념

Git은 내 컴퓨터(로컬)에서 코드의 변경 이력을 추적하고 버전을 관리하는 시스템이며,

GitHub는 Git으로 관리되는 프로젝트를 클라우드에 백업하고 다른 사람과 안전하게 협업할 수 있게 해주는 원격 호스팅 플랫폼

초기 설정

git config --global user.name "본인 영문 이름 또는 닉네임"
git config --global user.email "본인 이메일 주소"
git config --global core.editor "code --wait" # VSCode를 기본 편집기로 설정할 경우

 

핵심 워크플로우와 터미널 명령어

Git의 작업 흐름은 작업 폴더 ➔ (add) ➔ Staging Area(대기열) ➔ (commit) ➔ 로컬 저장소 ➔ (push) ➔ 원격 저장소(GitHub)

명령어 설명
git status 현재 파일들의 변경 상태 확인 (작업 전후 수시로 입력하여 확인)
git add <파일명> 변경된 파일을 커밋 대기열에 올림. 전체 반영은 git add .
git commit -m "..." 대기열의 파일들을 하나의 버전(스냅샷)으로 확정하여 로컬에 저장
git push origin <브랜치명> 로컬에 저장된 커밋 내역을 GitHub 원격 저장소로 업로드
git switch -c <브랜치명> 새로운 브랜치를 생성하고 즉시 이동 (과거 checkout -b 역할을 대체)

 

커밋 메시지 작성 가이드

  • feat: 새로운 기능 추가 (예: feat: YOLOv8 기반 객체 인식 모델 추론 코드 추가)
  • fix: 버그 수정 (예: fix: 이미지 전처리 과정의 메모리 누수 해결)
  • docs: README 등 문서 수정 (예: docs: 모델 성능 평가 지표 업데이트)
  • style: 코드 포맷팅, 세미콜론 누락 등 비즈니스 로직 변경이 없는 경우
  • refactor: 코드 리팩토링 (기능은 동일하나 코드 구조나 성능을 개선)
  • chore: 환경 설정 파일, 빌드 업무 수정 (예: chore: environment.yaml 환경 구성 추가)

Pull Request (PR)

별도의 브랜치에서 작업하고 push한 코드를 메인 코드베이스에 합쳐달라고 관리자나 팀원들에게 "요청"하고 "리뷰"받는 공식적인 과정

  1. 로컬에서 새로운 브랜치 생성 및 작업 후 git push 완료
  2. GitHub 웹페이지 저장소에 접속하여 Compare & pull request 버튼 클릭
  3. 어떤 변경 사항이 있는지, 왜 수정했는지 제목과 본문을 상세히 적어 PR 생성
  4. 팀원들의 코드 리뷰 피드백 및 승인(Approve) 대기
  5. 문제가 없다면 메인 브랜치에 최종 병합(Merge)

 

[Conflict] 제일 골치아픈 충돌!

충돌 시나리오

  1. 팀원 A가 train.py의 10번째 줄 에포크(epoch)를 50으로 수정하고 push 했습니다.
  2. 내가 train.py의 10번째 줄 에포크를 100으로 수정했습니다.
  3. 내가 작업한 내용을 반영하기 위해 git pull을 받는 순간, Git이 "Merge conflict in train.py"라는 에러를 띄웁니다.

해결 방법

  1. 충돌 파일 확인 : git status
    - 터미널에 git status를 입력하면 붉은색 글씨로 both modified: train.py처럼 충돌이 발생한 파일 목록이 나타납니다.
  2. 충돌 파일 열기 및 코드 확인:
  3. 충돌난 파일을 VSCode 등의 에디터를 열고, 파일 안에 들어가 보면 Git이 아래처럼 충돌 구간을 특수한 기호로 묶여 있는 형태
    <<<<<<<, =======, >>>>>>> 기호들을 모두 지우고, 최종적으로 남길 코드를 직접 타이핑하거나 수정한다. 
    두 코드를 섞어도 되고, 하나만 남겨도 됩니다.
# train.py 내부의 충돌 모습
<<<<<<< HEAD
epochs = 100    # 내가 현재 브랜치에서 수정한 내용
=======
epochs = 50     # 팀원 A가 원격 저장소에 올려둔 내용
>>>>>>> main
# 기호를 지우고 최종적으로 수정 완료한 모습
epochs = 100
 
git add train.py
git commit -m "fix: train.py 에포크 설정 충돌 해결"
 
 
5.원격 저장소에 Push:

- 안전하게 병합이 완료되었으므로 git push를 통해 최종 코드를 GitHub에 업로드

- VSCode를 사용 중이시라면 충돌이 발생했을 때 에디터 화면에 초록색/파란색 하이라이트와
[Accept Current Change(내 코드 적용)] |
[Accept Incoming Change(가져온 코드 적용)] |
[Accept Both Changes(둘 다 유지)]
라는 편리한 클릭 버튼이 나타납니다.
이 버튼을 활용하면 특수 기호를 직접 지울 필요 없이 클릭 한 번으로 쉽게 충돌을 해결할 수 있습니다.

 

'프로젝트 > Git' 카테고리의 다른 글

깃 허브 README - 잘 쓰는 것이 중요하다!  (0) 2026.09.22