로컬 git — 원격 없이도 됩니다
git은 내 PC 안에서만도 완전히 동작합니다. GitHub 같은 원격은 백업과 공유를 위해 나중에 붙이는 것이고, 되돌리기·이력·비교는 로컬만으로 전부 됩니다.
| 단계 | 얻는 것 | 필요한 것 |
|---|---|---|
| 로컬 저장소 | 이력 · 되돌리기 · 변경 비교 | git 설치만 |
| 원격 연결 | 백업 · 다른 PC · 공유 | GitHub 등 계정 |
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
git이 안 잡힐 때 — PATH 수동 추가
새 터미널에서도 git을 못 찾으면 PATH에 실행 파일 폴더가 없는 것입니다. 먼저 설치 자체가 됐는지 봅니다.
Test-Path "C:\Program Files\Git\cmd\git.exe"
True가 나오면 설치는 됐고 PATH만 없는 상태입니다. 추가할 경로는 이 한 줄입니다.
C:\Program Files\Git\cmd
방법 ① 화면에서 추가
시스템 환경 변수 편집 열기
시작 메뉴에서 환경 변수로 검색 → 시스템 환경 변수 편집 실행
환경 변수 버튼
고급 탭 → 환경 변수(N)… 클릭
사용자 변수의 Path 선택
위쪽 사용자 변수 목록에서 Path → 편집
새로 만들기
새로 만들기 → C:\Program Files\Git\cmd 입력 → 확인 3번
터미널 새로 열기
기존 창에는 반영되지 않습니다. 반드시 새 창에서 확인합니다.
방법 ② PowerShell로 추가
화면을 거치지 않고 사용자 PATH에만 영구 등록합니다.
# 현재 '사용자' PATH만 읽어서 뒤에 덧붙인다
$old = [Environment]::GetEnvironmentVariable('Path', 'User')
[Environment]::SetEnvironmentVariable('Path', $old + ';C:\Program Files\Git\cmd', 'User')제대로 잡혔는지 확인
새 터미널을 열고 실행합니다.
where.exe git
버전 확인과 최초 설정
설치가 끝났으면 버전이 나와야 합니다.
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 true | Windows에서 줄바꿈을 자동 변환합니다. 이걸 안 하면 파일을 열기만 해도 전체 줄이 바뀐 것처럼 보입니다 |
설정이 어디에 저장됐는지까지 보려면:
git config --list --show-origin
- git --version이 버전 번호를 출력한다
- where.exe git이 경로를 알려준다
- 이름 · 이메일 · 기본 브랜치 · 줄바꿈 설정을 넣었다
원격이 될 저장소 준비하기
외부 서비스를 쓸 수 없다면 내 PC의 다른 폴더나 사내 공유 드라이브를 원격으로 쓸 수 있습니다. 이때 필요한 것이 --bare 저장소입니다. GitHub를 쓸 거라면 이 단계는 건너뛰고 5단계로 가세요.
bare가 뭐가 다른가
작업 폴더가 없는 저장소입니다. 소스 파일이 펼쳐져 있지 않고 이력만 들어 있습니다. 그래서 사람이 편집하는 곳이 아니라 주고받기 위한 곳입니다.
| 일반 저장소 | bare 저장소 | |
|---|---|---|
| 만드는 법 | git init | git init --bare |
| 소스 파일 | 펼쳐져 있음 | 없음 — 이력만 |
| 이력 위치 | .git/ 하위 | 폴더 바로 밑 |
| 하는 일 | 편집 · 커밋 | push를 받는 곳 |
| 이름 관례 | my-project | my-project.git |
만들기
원격으로 쓸 폴더에서 만듭니다. 여기서는 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
어느 것을 고를까
| 상황 | 선택 |
|---|---|
| 나 혼자, 되돌리기만 필요 | 원격 없이 — 5단계까지만 |
| 외부 서비스 사용 불가 · 사내 공유 드라이브는 있음 | bare 저장소 (이 단계) |
| 팀 협업 · 코드 리뷰 · 이슈 관리 | GitHub 등 — 6단계 |
기존 폴더를 git 저장소로
이미 소스가 들어 있는 폴더를 그 자리에서 저장소로 만듭니다. 파일을 옮기거나 복사하지 않습니다.
cd C:\work\my-project git init -b main
커밋 전에 .gitignore부터
한 번 커밋되면 이력에 남아 나중에 지워도 완전히 사라지지 않습니다. 제외할 것을 먼저 정합니다. 폴더 루트에 .gitignore 파일을 만들고:
# 빌드 산출물 bin/ obj/ dist/ build/ node_modules/ # 설정 · 비밀 .env *.local appsettings.Development.json # 개인 · 임시 .vs/ .idea/ *.log Thumbs.db
상태 확인 → 담기 → 커밋
git status
제외한 것 말고 넣을 파일만 보이는지 눈으로 확인한 뒤 담습니다.
git add . git status
git commit -m "chore: 기존 소스 최초 커밋"
git log --oneline
원격에 올리기 — 첫 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
git clone --bare C:\work\my-project D:\git-remotes\my-project.git
② GitHub로
빈 저장소를 만든다
GitHub → New repository. 사내 코드라면 반드시 Private.
초기화 항목을 모두 끈다
README · .gitignore · license 체크를 해제합니다. 하나라도 켜면 원격에 커밋이 생겨 첫 push가 거부됩니다.
주소를 복사한다
https://github.com/계정/저장소.git 형태입니다.
원격을 등록하고 올린다
아래 두 명령을 순서대로 실행합니다.
git remote add origin https://github.com/<계정>/<저장소>.git git remote -v
git push -u origin main
| 부분 | 뜻 |
|---|---|
| origin | 원격 저장소에 붙이는 별명. 관례적으로 origin을 씁니다 |
| -u | 이 브랜치의 기본 업로드 대상을 기억합니다. 다음부터는 git push만 쳐도 됩니다 |
이후의 일상 흐름
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 |
- winget install --source winget --id Git.Git -e로 설치했다
- 새 터미널에서 git --version이 나온다
- .gitignore를 커밋 전에 먼저 만들었다
- 기존 폴더에서 git init -b main 후 최초 커밋을 남겼다
- git push -u origin main으로 원격에 올렸다
- 원격을 직접 만들 때는 git init --bare가 필요한 이유를 안다