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한 코드를 메인 코드베이스에 합쳐달라고 관리자나 팀원들에게 "요청"하고 "리뷰"받는 공식적인 과정
- 로컬에서 새로운 브랜치 생성 및 작업 후 git push 완료
- GitHub 웹페이지 저장소에 접속하여 Compare & pull request 버튼 클릭
- 어떤 변경 사항이 있는지, 왜 수정했는지 제목과 본문을 상세히 적어 PR 생성
- 팀원들의 코드 리뷰 피드백 및 승인(Approve) 대기
- 문제가 없다면 메인 브랜치에 최종 병합(Merge)
[Conflict] 제일 골치아픈 충돌!
충돌 시나리오
- 팀원 A가 train.py의 10번째 줄 에포크(epoch)를 50으로 수정하고 push 했습니다.
- 내가 train.py의 10번째 줄 에포크를 100으로 수정했습니다.
- 내가 작업한 내용을 반영하기 위해 git pull을 받는 순간, Git이 "Merge conflict in train.py"라는 에러를 띄웁니다.
해결 방법
- 충돌 파일 확인 : git status
- 터미널에 git status를 입력하면 붉은색 글씨로 both modified: train.py처럼 충돌이 발생한 파일 목록이 나타납니다. - 충돌 파일 열기 및 코드 확인:
- 충돌난 파일을 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 |
|---|