참고 · 선택

Git for Windows —
설치부터 첫 push까지

내 PC의 소스를 되돌릴 수 있는 상태로 만듭니다. 설치 · PATH · 저장소 초기화 · 첫 push를 한 번에.

  • 1winget으로 설치하고 PATH를 직접 잡는다
  • 2기존 폴더를 그대로 git 저장소로 만든다
  • 3원격을 붙여 첫 push를 마친다 — GitHub 또는 bare 저장소
읽는 시간 13분실습 20분선수 없음 · 선택
자세히 보기
1단계설치winget으로2단계확인PATH · 버전3단계저장소폴더를 git으로4단계올리기원격에 push설치부터 첫 push까지 — 한 번만 해두면 계속 씁니다
개념왜 먼저 하나

로컬 git — 원격 없이도 됩니다

git은 내 PC 안에서만도 완전히 동작합니다. GitHub 같은 원격은 백업과 공유를 위해 나중에 붙이는 것이고, 되돌리기·이력·비교는 로컬만으로 전부 됩니다.

단계얻는 것필요한 것
로컬 저장소이력 · 되돌리기 · 변경 비교git 설치만
원격 연결백업 · 다른 PC · 공유GitHub 등 계정
이 페이지가 끝나면설치 → PATH → 설정 → 원격 준비(필요할 때) → 기존 폴더를 저장소로 → 첫 커밋 → 첫 push까지 끝나 있습니다.
Claude Code와의 관계Claude Code는 git이 있으면 변경 이력을 읽고 되돌릴 수 있어 훨씬 안전합니다. B-4의 worktree 병렬 작업도 git 저장소가 전제입니다.
1단계winget

Git for Windows 설치

Windows 11과 최신 Windows 10에는 winget(앱 설치 관리자)이 기본 포함돼 있습니다. PowerShell을 열고 먼저 패키지가 맞는지 확인합니다.

winget search --source winget --id Git.Git

확인했으면 정확히 그 패키지를 지정해 설치합니다.

winget install --source winget --id Git.Git -e
옵션
--source winget공식 winget 저장소에서만 찾습니다. 지정하지 않으면 msstore까지 뒤져 엉뚱한 앱이 잡힐 수 있습니다
--id Git.Git패키지 ID로 지정 — 이름 검색보다 확실합니다
-e--exact. ID가 정확히 일치할 때만 설치합니다

화면 없이 조용히 설치하려면 이렇게 씁니다. 사내 배포 스크립트에 넣을 때 유용합니다.

winget install --source winget --id Git.Git -e --silent --accept-package-agreements --accept-source-agreements
줄바꿈 문법PowerShell에서 명령을 여러 줄로 나눌 때는 백틱(`)을 씁니다. 다른 문서에서 흔히 보는 \Linux · macOS 문법이라 PowerShell에 그대로 붙여넣으면 깨집니다.
설치 후 반드시지금 열려 있는 터미널은 예전 PATH를 그대로 들고 있습니다. 설치가 끝나면 터미널을 닫고 새로 여세요. "설치했는데 git이 없다"는 경우의 대부분이 이것입니다.
winget이 없다면Microsoft Store에서 앱 설치 관리자를 설치하면 winget이 생깁니다. 그것도 어려우면 git-scm.com에서 설치 파일을 받아도 결과는 같습니다.
2단계PATH

git이 안 잡힐 때 — PATH 수동 추가

새 터미널에서도 git을 못 찾으면 PATH에 실행 파일 폴더가 없는 것입니다. 먼저 설치 자체가 됐는지 봅니다.

Test-Path "C:\Program Files\Git\cmd\git.exe"

True가 나오면 설치는 됐고 PATH만 없는 상태입니다. 추가할 경로는 이 한 줄입니다.

C:\Program Files\Git\cmd

방법 ① 화면에서 추가

1

시스템 환경 변수 편집 열기

시작 메뉴에서 환경 변수로 검색 → 시스템 환경 변수 편집 실행

2

환경 변수 버튼

고급 탭 → 환경 변수(N)… 클릭

3

사용자 변수의 Path 선택

위쪽 사용자 변수 목록에서 Path편집

4

새로 만들기

새로 만들기C:\Program Files\Git\cmd 입력 → 확인 3번

5

터미널 새로 열기

기존 창에는 반영되지 않습니다. 반드시 새 창에서 확인합니다.

방법 ② PowerShell로 추가

화면을 거치지 않고 사용자 PATH에만 영구 등록합니다.

# 현재 '사용자' PATH만 읽어서 뒤에 덧붙인다
$old = [Environment]::GetEnvironmentVariable('Path', 'User')
[Environment]::SetEnvironmentVariable('Path', $old + ';C:\Program Files\Git\cmd', 'User')
흔한 실수$env:Path를 그대로 넣지 마세요. 그건 시스템 + 사용자 PATH가 합쳐진 값이라, 사용자 PATH에 저장하면 시스템 경로가 통째로 복사돼 중복이 쌓이고 길이 제한에 걸립니다. 위처럼 사용자 값만 읽어서 덧붙여야 합니다.

제대로 잡혔는지 확인

새 터미널을 열고 실행합니다.

where.exe git
where가 아니라 where.exePowerShell에서 whereWhere-Object별칭이라 엉뚱하게 동작합니다. 반드시 where.exe로 쓰세요. (명령 프롬프트에서는 where git으로 충분합니다)
3단계확인 · 설정

버전 확인과 최초 설정

설치가 끝났으면 버전이 나와야 합니다.

git --version
git version 2.51.0.windows.1

커밋에는 이름과 이메일이 함께 기록됩니다. 처음 한 번만 정해두면 됩니다.

git config --global user.name "홍길동"
git config --global user.email "hong@example.com"

Windows에서 권장되는 설정 두 가지도 같이 넣습니다.

git config --global init.defaultBranch main
git config --global core.autocrlf true
설정하는 일
init.defaultBranch main새 저장소의 기본 브랜치를 master 대신 main으로. GitHub 기본값과 맞춥니다
core.autocrlf trueWindows에서 줄바꿈을 자동 변환합니다. 이걸 안 하면 파일을 열기만 해도 전체 줄이 바뀐 것처럼 보입니다

설정이 어디에 저장됐는지까지 보려면:

git config --list --show-origin
4단계git init --bare

원격이 될 저장소 준비하기

외부 서비스를 쓸 수 없다면 내 PC의 다른 폴더사내 공유 드라이브를 원격으로 쓸 수 있습니다. 이때 필요한 것이 --bare 저장소입니다. GitHub를 쓸 거라면 이 단계는 건너뛰고 5단계로 가세요.

bare가 뭐가 다른가

작업 폴더가 없는 저장소입니다. 소스 파일이 펼쳐져 있지 않고 이력만 들어 있습니다. 그래서 사람이 편집하는 곳이 아니라 주고받기 위한 곳입니다.

일반 저장소bare 저장소
만드는 법git initgit init --bare
소스 파일펼쳐져 있음없음 — 이력만
이력 위치.git/ 하위폴더 바로 밑
하는 일편집 · 커밋push를 받는 곳
이름 관례my-projectmy-project.git
일반 저장소에 push하면거부됩니다 — refusing to update checked out branch. 받는 쪽이 그 브랜치를 펼쳐 놓고 있으면 작업 내용과 어긋나기 때문입니다. 받는 쪽은 bare여야 합니다.

만들기

원격으로 쓸 폴더에서 만듭니다. 여기서는 D:\git-remotes를 예로 듭니다.

mkdir D:\git-remotes
cd D:\git-remotes
git init --bare my-project.git

안을 열어 보면 소스가 아니라 HEAD · objects · refs 같은 이력 구조만 있습니다.

dir D:\git-remotes\my-project.git
공유 폴더에 둘 때사내 파일 서버에 두면 팀이 함께 씁니다. 주소는 UNC 경로로 적습니다 — \\파일서버\git\my-project.git. 미리 쓰기 권한이 있는지 확인하세요.

어느 것을 고를까

상황선택
나 혼자, 되돌리기만 필요원격 없이 — 5단계까지만
외부 서비스 사용 불가 · 사내 공유 드라이브는 있음bare 저장소 (이 단계)
팀 협업 · 코드 리뷰 · 이슈 관리GitHub 등 — 6단계
bare는 백업이 아닙니다같은 PC의 다른 폴더에 두면 디스크가 죽을 때 함께 사라집니다. 최소한 다른 물리 디스크나 공유 드라이브에 두고, 중요한 저장소는 별도 백업을 두세요.
다음 단계지금 만든 것은 받을 곳입니다. 보낼 작업 저장소는 5단계에서 만들고, 6단계에서 이 주소를 원격으로 붙입니다.
5단계init

기존 폴더를 git 저장소로

이미 소스가 들어 있는 폴더를 그 자리에서 저장소로 만듭니다. 파일을 옮기거나 복사하지 않습니다.

cd C:\work\my-project
git init -b main
구버전이면-b 옵션은 git 2.28 이상입니다. 오류가 나면 git initgit branch -M main으로 이름을 바꾸세요.

커밋 전에 .gitignore부터

한 번 커밋되면 이력에 남아 나중에 지워도 완전히 사라지지 않습니다. 제외할 것을 먼저 정합니다. 폴더 루트에 .gitignore 파일을 만들고:

# 빌드 산출물
bin/
obj/
dist/
build/
node_modules/

# 설정 · 비밀
.env
*.local
appsettings.Development.json

# 개인 · 임시
.vs/
.idea/
*.log
Thumbs.db
가장 중요비밀번호 · API 키 · 접속 정보가 든 파일은 반드시 먼저 .gitignore에 넣으세요. 실수로 커밋했다면 파일을 지우는 것으로는 부족하고 그 키를 폐기하고 새로 발급해야 합니다.

상태 확인 → 담기 → 커밋

git status

제외한 것 말고 넣을 파일만 보이는지 눈으로 확인한 뒤 담습니다.

git add .
git status
git commit -m "chore: 기존 소스 최초 커밋"
git log --oneline
여기까지가 로컬 관리이제 되돌릴 수 있는 상태가 됐습니다. 원격에 올리지 않아도 이력 · 비교 · 복구는 전부 됩니다.
6단계push

원격에 올리기 — 첫 push

이제 보낼 곳이 준비됐습니다. 4단계에서 만든 bare 저장소에 올리거나, GitHub에 올립니다. 명령은 주소만 다릅니다.

① 4단계의 bare 저장소로

주소 자리에 폴더 경로를 그대로 씁니다.

cd C:\work\my-project
git remote add origin D:\git-remotes\my-project.git
git push -u origin main

사내 공유 폴더라면 UNC 경로를 씁니다.

git remote add origin \\파일서버\git\my-project.git

다른 PC에서는 같은 경로를 clone해 그대로 받아 씁니다.

git clone D:\git-remotes\my-project.git
cd my-project
git log --oneline
이미 만든 저장소를 원격으로작업 폴더가 이미 있다면 --bare복제해 원격을 만들 수도 있습니다. 4단계에서 만들고 push하는 것과 결과가 같습니다.
git clone --bare C:\work\my-project D:\git-remotes\my-project.git

② GitHub로

1

빈 저장소를 만든다

GitHub → New repository. 사내 코드라면 반드시 Private.

2

초기화 항목을 모두 끈다

README · .gitignore · license 체크를 해제합니다. 하나라도 켜면 원격에 커밋이 생겨 첫 push가 거부됩니다.

3

주소를 복사한다

https://github.com/계정/저장소.git 형태입니다.

4

원격을 등록하고 올린다

아래 두 명령을 순서대로 실행합니다.

git remote add origin https://github.com/<계정>/<저장소>.git
git remote -v
git push -u origin main
부분
origin원격 저장소에 붙이는 별명. 관례적으로 origin을 씁니다
-u이 브랜치의 기본 업로드 대상을 기억합니다. 다음부터는 git push만 쳐도 됩니다
인증 — GitHub만첫 push에서 Git Credential Manager 창이 뜨고 브라우저 로그인으로 이어집니다. 한 번 로그인하면 저장됩니다. GitHub는 계정 비밀번호로는 push할 수 없고, 창이 안 뜨면 Personal Access Token을 발급해 비밀번호 자리에 넣습니다.

이후의 일상 흐름

git status          # 무엇이 바뀌었나
git add .           # 커밋할 것을 담고
git commit -m "fix: 로그인 오류 수정"
git push            # 올린다
문제 해결자주 막히는 곳

이 증상이면 이걸 보세요

증상원인해결
git : 용어를 인식할 수 없습니다PATH 미반영터미널을 새로 열기 → 그래도 안 되면 2단계의 PATH 추가
winget : 인식할 수 없습니다앱 설치 관리자 없음Microsoft Store에서 앱 설치 관리자 설치
push 시 rejected … fetch first원격에 이미 커밋이 있음 (README 체크)git pull --rebase origin main 후 다시 push
Authentication failed비밀번호 인증 불가PAT를 발급해 쓰거나 자격 증명 관리자에서 재로그인
refusing to update checked out branch받는 쪽이 일반 저장소원격은 git init --bare로 만들기 (4단계)
바꾼 것 없는데 전체 파일이 변경줄바꿈(CRLF/LF)core.autocrlf true 설정 후 다시 확인
한글 파일명이 \355\225\234처럼 보임quotepath 기본값git config --global core.quotepath false

되돌리기 — 처음에 알아둘 세 가지

상황명령
파일 수정을 커밋 전에 취소git restore <파일>
git add를 취소git restore --staged <파일>
직전 커밋 메시지만 고치기git commit --amend
주의git reset --hard작업 내용을 되돌릴 수 없게 지웁니다. 익숙해지기 전에는 쓰지 마세요.
클로드코드 시작하기참고 · 선택