이 글은 "Git을 들어는 봤는데, 막상 쓰려니 막막한" 분들을 위한 최소한의 가이드입니다. 복잡한 원리보다는 당장 과제와 프로젝트에 써먹을 수 있는 실전 압축 지식부터 시작해 점차 범위를 확장해 나갑니다.
[이 글의 가정]
- Window 운영체제 사용
- GitHub 계정 존재 (없다면 GitHub 회원가입 페이지에서 먼저 가입해 주세요!)
1단계. Git의 4가지 공간 이해하기 (가장 중요 ⭐️)
코드를 수정하고 GitHub에 올리기까지, 파일은 다음 4개의 공간을 순서대로 거치게 됩니다. 이 흐름만 이해해도 Git의 절반을 아신 겁니다.
[Working Directory] → (git add)
→ [Staging Area] → (git commit)
→ [Local Repository] → (git push)
→ [Remote Repository]
| 상태 | 설명 |
|---|---|
| Working Directory | 현재 내 컴퓨터에서 파일을 수정하는 공간. 아직 Git이 추적하지 않는 변경사항 |
| Staging Area |
git add로 올린 변경사항이 대기하는 공간. 커밋할 내용을 선별하는 단계 |
| Local Repository |
git commit으로 변경 이력이 저장된 내 컴퓨터의 저장소 |
| Remote Repository | GitHub 등 원격 서버에 있는 저장소. git push로 로컬 변경사항을 업로드 |
2단계. 최초 1회 세팅 (컴퓨터 사서 처음 한 번만)
1. 터미널 및 Git 설치
개발을 하려면 리눅스 환경에 익숙해지는 것이 유리하므로, Windows 환경에서는 WSL(Windows Subsystem for Linux) 사용을 권장합니다.
# 1. Windows PowerShell을 관리자 권한으로 실행 후 WSL 설치 명령어 입력
wsl --install
# 2. 설치 완료 후 컴퓨터 재부팅
# 3. 설치된 Ubuntu(WSL) 터미널을 실행한 뒤 홈 디렉토리로 이동
cd ~
# 4. 패키지 목록 업데이트 및 Git 설치
sudo apt-get update
sudo apt-get install git
# 5. 설치 완료 후 버전 확인
git --version
2. 사용자 정보 등록
커밋 내역에 기록될 이름과 이메일을 설정합니다.
git config --global user.name "홍길동"
git config --global user.email "your@email.com"
3단계. 새로운 프로젝트 시작하기
1. GitHub 원격 저장소(Repository) 생성
- GitHub 로그인 후 우측 상단의 + 버튼을 누르고 New repository를 클릭합니다.
-
Repository name에 프로젝트 이름을 입력합니다. (예:
programming-assignment) - 저장소 공개 범위(Public 또는 Private)를 선택합니다.
- 하단의 Create repository 버튼을 누르면 원격 저장소가 생성됩니다.
- 생성된 페이지에서
HTTPS탭이 선택된 상태로 저장소 URL 주소를 복사합니다. > 이미 만들어진 Repository가 있다면 URL 주소만 복사하면 됩니다.
2. 원격 저장소를 로컬로 가져오기 (Clone)
복사한 URL을 사용하여 프로젝트를 작업할 디렉토리로 다운로드합니다.
# 원하는 디렉토리로 이동 후 원격 저장소 복제
cd ~
git clone {복사한 레포지토리 URL}
# 다운로드된 프로젝트 폴더 목록 확인 후 진입
ls
cd programming-assignment
4단계. 매일 반복하는 작업 사이클
팀 프로젝트를 진행할 때 충돌을 최소화하고 안전하게 코드를 올리는 표준 흐름입니다.
1. 작업 시작 전: 최신 코드 반영 및 브랜치 생성
다른 팀원이 변경한 사항이 있을 수 있으므로 항상 최신 코드를 받아온 상태에서 새로운 브랜치를 만들어 작업을 시작합니다.
# 메인 브랜치로 이동하여 최신 소스코드 다운로드
git checkout main
git pull origin main
# 기능을 개발할 새로운 브랜치를 생성하며 동시에 이동 (-b 옵션)
git checkout -b feature/login
2. 변경 사항 확인 및 반영 (Status, Add, Commit)
코드를 수정한 뒤 로컬 저장소에 기록하는 과정입니다.
# 1. 현재 파일들의 상태 확인 (수정되거나 추가된 파일 확인 가능)
git status
# 파일명이 빨간색으로 표시되면 Working Directory 상태, 초록색이면 Staging Area 상태를 의미합니다.
# 2. 변경된 파일을 Staging Area로 추가
git add {특정 파일명}
git add . # 현재 디렉토리의 모든 변경 사항을 한 번에 추가할 때 사용
# 3. 변경 이력을 로컬 저장소에 기록 (커밋 메시지는 명확하게 작성)
git commit -m "feat: 로그인 기능 구현"
3. 원격 저장소에 업로드 (Push)
작업이 완료된 로컬 브랜치의 내용을 GitHub에 반영합니다.
git push origin feature/login
주의: GitHub 보안 정책에 따라 인증 가이드가 나타나면 패스워드 칸에 일반 계정 비밀번호가 아닌, GitHub에서 발급받은 개인 토큰(Personal Access Token)을 입력해야 합니다.
5단계. 헷갈리기 쉬운 필수 개념 정리
1. Git vs GitHub
- Git: 내 컴퓨터(로컬) 안에서 파일의 변경 이력을 추적하고 관리하는 핵심 프로그램입니다. 인터넷 연결 없이도 동작합니다.
- GitHub: Git으로 관리되는 프로젝트 파일들을 웹상에 올려 공유하고, 다른 사람과 협업할 수 있도록 돕는 클라우드 서비스입니다.
2. Fork vs Clone
| 명령어 | 주요 역할 | 주로 사용하는 상황 |
|---|---|---|
| Fork | 타인의 GitHub 원격 저장소를 본인의 GitHub 원격 저장소로 통째로 복사합니다. | 오픈소스 프로젝트에 기여하거나, 원본 저장소에 직접 권한이 없을 때 사용합니다. |
| Clone | GitHub 원격 저장소에 있는 코드를 내 컴퓨터(로컬)로 다운로드합니다. | 본인 프로젝트나 팀 프로젝트를 시작하기 위해 로컬로 가져올 때 사용합니다. |
3. origin
origin은 현재 로컬 저장소와 연결된 기본 원격 저장소의 별칭(Alias)입니다. 프로젝트 복제 시 자동으로 지정되며, 아래 명령어로 주소를 확인할 수 있습니다.
git remote -v
6단계. 알아두면 유용한 추가 명령어
기본 사이클이 익숙해진 후 필요에 따라 찾아 쓸 수 있는 명령어 목록입니다.
1. 브랜치 관리
git branch # 로컬 브랜치 목록 확인
git branch -r # 원격 저장소 브랜치 목록 확인
git branch -a # 로컬 및 원격 저장소의 모든 브랜치 목록 확인
git branch -d {브랜치명} # 작업이 끝난 로컬 브랜치 삭제
2. 임시 저장 (Stash)
작업 도중 커밋하지 않은 상태에서 급하게 다른 브랜치로 전환해야 할 때, 현재 변경 사항을 임시로 보관하는 기능입니다.
git stash # 현재 변경 사항을 서랍에 임시 저장
git stash pop # 임시 저장했던 내역을 다시 꺼내와 현재 작업에 적용
3. 커밋 이력 확인
git log # 전체 상세 커밋 이력 확인
git log --oneline # 커밋 해시와 메시지를 한 줄로 간략하게 확인 (권장)
4. 변경 사항 되돌리기 및 취소
# Working Directory의 변경 사항을 취소하고 마지막 커밋 상태로 되돌림
git restore {파일명}
# Staging Area에 올린 파일을 내려서 복원 (git add 취소)
git restore --staged {파일명}
# 로컬 저장소의 최근 커밋을 취소
git reset --soft HEAD~1 # 커밋만 취소하며, 작업했던 코드는 Staging Area에 남겨둠
git reset --hard HEAD~1 # 🚨 최근 커밋과 작업했던 코드까지 전부 완전히 삭제하므로 주의 필요
5. 커밋 이력 정리 (Interactive Rebase)
# 최근 작성한 N개의 커밋 목록을 확인하고 수정하거나 하나로 합칠 때 사용
git rebase -i HEAD~{숫자}
주의: 원격 저장소(GitHub)에 이미 push된 커밋에 대해서는 reset이나 rebase를 사용하는 것을 지양해야 합니다. 원격 이력이 꼬여 팀원 간 충돌을 유발할 수 있습니다.
Top comments (0)