핵심 요약
Git은 파일을 단순히 백업하는 도구가 아니라 프로젝트의 변경 이력을 커밋 단위로 기록하고, 필요한 시점의 상태를 비교하거나 복구할 수 있게 하는 분산 버전 관리 시스템입니다.
Git을 처음 사용할 때는 다음 흐름을 이해하는 것이 중요합니다.
작업 폴더에서 파일 수정
↓ git status와 git diff로 확인
스테이징 영역에 다음 커밋 대상 선택
↓ git add
로컬 저장소에 변경 기록
↓ git commit
원격 저장소와 변경 교환
↓ git fetch, git pull, git push
처음에는 다음 명령부터 익히면 됩니다.
git --version
git status
git diff
git add 파일명
git diff --staged
git commit -m "변경 내용을 설명하는 메시지"
git log --oneline
git branch --show-current
git remote -v
명령을 실행하기 전에는 현재 저장소, 브랜치와 변경 파일을 먼저 확인합니다.
pwd
git status
git branch --show-current
git status와 git diff는 변경을 기록하지 않는 읽기 전용 확인 명령입니다. Git 작업에서 판단이 어려우면 이 두 명령으로 현재 상태를 먼저 확인하는 습관을 들이는 것이 좋습니다.
Git의 기본 구조
Git과 GitHub의 차이
Git은 로컬 컴퓨터에서 변경 이력을 관리하는 버전 관리 도구입니다. GitHub는 Git 저장소를 원격으로 보관하고 공유, Issue, Pull Request와 자동화 기능을 제공하는 서비스입니다.
Git은 GitHub 없이도 사용할 수 있습니다.
Git
├── 로컬 저장소 생성
├── 변경 이력 기록
├── 브랜치 생성과 병합
└── 이전 상태 비교와 복구
GitHub
├── 원격 저장소 제공
├── 공동 작업
├── Pull Request와 코드 검토
└── GitHub Actions
GitHub 외에도 GitLab, Bitbucket과 직접 운영하는 Git 서버를 원격 저장소로 사용할 수 있습니다.
작업 폴더, 스테이징 영역과 저장소
Git 프로젝트의 변경은 다음 세 영역을 중심으로 이해할 수 있습니다.
| 영역 | 의미 |
|---|---|
| 작업 폴더 | 현재 사용자가 파일을 읽고 수정하는 영역 |
| 스테이징 영역 | 다음 커밋에 포함할 변경을 선택해 둔 영역 |
| Git 저장소 | 커밋과 브랜치 기록을 보관하는 .git 영역 |
파일의 대표적인 상태는 다음과 같습니다.
| 상태 | 의미 |
|---|---|
| Untracked | Git이 아직 추적하지 않는 새 파일 |
| Modified | 추적 중인 파일이 수정됨 |
| Staged | 다음 커밋에 포함하도록 선택됨 |
| Committed | 변경이 로컬 Git 저장소에 기록됨 |
git add는 파일을 원격 저장소로 전송하는 명령이 아닙니다. 현재 변경 내용을 다음 커밋에 포함하도록 스테이징 영역에 올리는 명령입니다.
git commit도 GitHub로 전송하는 명령이 아닙니다. 스테이징한 변경을 로컬 저장소에 기록합니다. 원격 저장소로 보내려면 별도로 git push를 실행합니다.
Git 명령의 기본 형식
git 하위명령 옵션 대상
예:
git diff --staged README.md
| 항목 | 의미 |
|---|---|
git |
Git 명령 실행 |
diff |
변경 내용 비교 |
--staged |
스테이징한 변경을 기준으로 비교 |
README.md |
확인할 대상 파일 |
설치와 사용자 설정 확인
git --version: Git 버전 확인
git --version
출력 예:
git version 2.x.x
실제 버전은 운영체제, 패키지 저장소와 설치 시점에 따라 다릅니다.
현재 설정 확인
git config --list --show-origin
설정값뿐 아니라 어느 설정 파일에서 가져왔는지 함께 확인합니다. 출력에 인증 관련 설정이나 민감한 URL이 포함될 수 있으므로 그대로 공유하지 않습니다.
사용자 이름과 이메일만 확인하려면 다음 명령을 사용합니다.
git config --global user.name
git config --global user.email
사용자 이름과 이메일 설정
다음 값은 예시입니다. 실제 커밋에 표시할 이름과 이메일을 사용합니다.
git config --global user.name "Example User"
git config --global user.email "user@example.com"
--global은 현재 사용자 전체의 기본 설정을 바꿉니다. 특정 저장소에서만 다른 값을 사용하려면 해당 저장소에서 --global 없이 설정합니다.
git config user.name "Project User"
git config user.email "project-user@example.com"
저장소별 설정 확인:
git config --local --list
Git 저장소 준비
git init: 현재 폴더를 Git 저장소로 초기화
먼저 현재 위치와 파일을 확인합니다.
pwd
ls -la
현재 폴더에 새 Git 저장소를 만듭니다.
git init
Git은 현재 폴더 아래에 .git 폴더를 만듭니다. .git에는 커밋, 브랜치와 저장소 설정이 들어 있으므로 일반 프로젝트 파일처럼 수정하거나 삭제하지 않습니다.
저장소 최상위 폴더 확인:
git rev-parse --show-toplevel
Git 저장소가 아닌 위치에서 실행하면 오류가 나타날 수 있습니다.
git clone: 원격 저장소 복제
git clone https://github.com/example/project.git
위 주소는 예시입니다. git clone은 일반적으로 새 프로젝트 폴더를 만들고 원격 저장소의 이력과 파일을 내려받으며, 원격 저장소를 origin이라는 이름으로 등록합니다.
복제 후 이동:
cd project
git status
git remote -v
이미 같은 이름의 폴더가 있거나 작업 중인 파일이 있는 위치에 무리하게 복제하지 않습니다.
저장소 여부 확인
git status
Git 저장소 안이라면 현재 브랜치와 변경 상태가 표시됩니다. 다음 오류가 나타나면 현재 위치가 Git 저장소가 아니거나 상위 폴더에도 .git이 없는 상태입니다.
fatal: not a git repository
이 오류만 보고 바로 git init을 실행하지 않습니다. 먼저 pwd, ls -la와 프로젝트 경로를 확인합니다. 잘못된 상위 폴더에서 git init을 실행하면 의도보다 넓은 파일 범위를 하나의 저장소로 관리하게 될 수 있습니다.
변경 상태 확인
git status: 현재 상태 확인
git status
다음 항목을 확인할 수 있습니다.
- 현재 브랜치
- 스테이징한 변경
- 아직 스테이징하지 않은 변경
- 추적하지 않는 파일
- 원격 추적 브랜치와의 차이
Git 작업 전후에 가장 자주 사용하는 명령입니다.
간단한 형식:
git status --short
브랜치 정보까지 표시:
git status --short --branch
짧은 출력의 왼쪽 열은 스테이징 영역, 오른쪽 열은 작업 폴더 상태를 나타냅니다.
예시 출력:
M README.md
M app.js
?? notes.txt
| 표시 | 예시 의미 |
|---|---|
M |
작업 폴더에서 수정했지만 아직 스테이징하지 않음 |
M |
수정 내용을 스테이징함 |
?? |
아직 추적하지 않는 새 파일 |
git diff: 스테이징 전 변경 확인
git diff
작업 폴더와 스테이징 영역의 차이를 확인합니다. 기본적으로 아직 스테이징하지 않은 변경 내용을 보여 줍니다.
특정 파일만 확인:
git diff README.md
변경된 파일 이름만 확인:
git diff --name-only
변경 통계 확인:
git diff --stat
git diff --staged: 커밋 예정 내용 확인
git diff --staged
스테이징 영역과 현재 커밋인 HEAD의 차이를 보여 줍니다. 다음 커밋에 실제로 들어갈 내용을 확인하는 데 사용합니다.
특정 파일만 확인:
git diff --staged README.md
--cached도 같은 목적으로 사용할 수 있습니다.
git diff --cached
파일 추적 제외
.gitignore
Git으로 추적하지 않을 파일이나 폴더 패턴을 저장소의 .gitignore에 기록합니다.
예:
node_modules/
dist/
.env
*.log
.env 같은 파일에는 실제 비밀정보가 들어갈 수 있으므로 처음 커밋하기 전에 .gitignore를 준비합니다.
무시 여부 확인:
git check-ignore -v .env
이미 Git이 추적하는 파일은 나중에 .gitignore에 추가해도 자동으로 추적이 중단되지 않습니다. 민감정보가 이미 커밋되었다면 파일을 삭제하는 것만으로 과거 기록에서 사라지지 않습니다. 토큰과 암호를 즉시 폐기·교체하고, 저장소 기록 정리는 별도 검토와 승인 후 진행합니다.
변경을 스테이징하기
git add: 다음 커밋 대상 선택
특정 파일을 스테이징합니다.
git add README.md
여러 파일을 명시할 수 있습니다.
git add README.md app.js package.json
스테이징 후 확인:
git status
git diff --staged
현재 폴더의 변경 전체 스테이징
git add .
현재 폴더 아래의 변경을 한꺼번에 스테이징합니다. 편리하지만 임시 파일, 로그, 빌드 결과와 비밀정보까지 포함할 수 있으므로 실행 전후에 반드시 확인합니다.
git status --short
git add .
git diff --staged --name-only
git diff --staged
초보 단계에서는 가능한 한 파일명을 명시해 필요한 변경만 스테이징하는 편이 안전합니다.
git add -p: 변경 일부만 선택
git add -p
한 파일 안의 변경을 작은 단위로 나누어 스테이징할 때 사용합니다. 서로 다른 목적의 변경이 한 파일에 섞였을 때 커밋을 분리하는 데 유용합니다.
대화형 선택이 필요하므로 각 변경 조각을 이해하지 못한 상태에서 일괄 승인하지 않습니다.
커밋 만들기
git commit: 스테이징한 변경 기록
git commit -m "README에 설치 방법 추가"
좋은 커밋은 하나의 주요 목적을 담고, 메시지는 무엇을 왜 바꿨는지 파악할 수 있게 작성합니다.
커밋 전에 다음 항목을 확인합니다.
git status
git diff --staged
커밋 후 확인:
git status
git log -1 --oneline
스테이징하지 않은 변경은 커밋되지 않음
git commit은 일반적으로 스테이징 영역의 내용만 기록합니다. 작업 폴더에 수정한 파일이 남아 있어도 스테이징하지 않았다면 해당 변경은 커밋에 포함되지 않습니다.
git commit -a 주의
git commit -a -m "추적 파일 수정"
-a는 이미 추적 중인 수정·삭제 파일을 자동으로 스테이징해 커밋하지만, 새 파일은 포함하지 않습니다. 변경 확인 단계를 건너뛰기 쉬우므로 초보 단계에서는 git add, git diff --staged, git commit을 나누어 실행하는 편이 좋습니다.
마지막 커밋 수정
git commit --amend
마지막 커밋의 내용이나 메시지를 새 커밋으로 교체합니다. 커밋 ID가 바뀌므로 이미 원격 저장소에 전송해 다른 사람이 사용하는 커밋에는 함부로 사용하지 않습니다.
커밋 기록 확인
git log: 커밋 이력 확인
git log
짧게 한 줄씩 표시:
git log --oneline
그래프와 전체 브랜치 표시:
git log --oneline --graph --decorate --all
최근 5개만 확인:
git log -5 --oneline
특정 파일의 이력:
git log --oneline -- README.md
git show: 특정 커밋 확인
현재 커밋 확인:
git show HEAD
특정 커밋 확인:
git show 커밋ID
커밋ID에는 git log --oneline에서 확인한 값을 사용합니다. 다른 저장소의 예시 값을 그대로 입력하지 않습니다.
변경 통계만 확인:
git show --stat 커밋ID
두 커밋 비교
git diff 이전커밋ID..이후커밋ID
파일 이름만 확인:
git diff --name-only 이전커밋ID..이후커밋ID
브랜치 관리
브랜치는 특정 커밋을 가리키는 이동 가능한 이름입니다. 작업 목적별 브랜치를 사용하면 기본 브랜치를 안정적으로 유지하면서 변경을 분리할 수 있습니다.
현재 브랜치 확인
git branch --show-current
로컬 브랜치 목록:
git branch
로컬과 원격 추적 브랜치 전체:
git branch --all
새 브랜치 생성과 이동
git switch -c docs/git-basic-guide
-c는 새 브랜치를 만들고 그 브랜치로 이동합니다.
기존 브랜치로 이동:
git switch main
브랜치를 이동하면 작업 폴더의 파일 상태가 바뀔 수 있습니다. 커밋하지 않은 변경이 있으면 이동이 거부되거나 변경이 함께 남을 수 있으므로 먼저 git status를 확인합니다.
브랜치만 생성
git branch docs/git-basic-guide
이 명령은 브랜치를 만들지만 현재 브랜치를 바꾸지는 않습니다.
브랜치 병합
예를 들어 작업 브랜치를 main에 병합하려면 먼저 main으로 이동합니다.
git status
git switch main
git merge docs/git-basic-guide
병합 전에는 작업 트리가 깨끗한지, 올바른 브랜치에 있는지 확인합니다.
병합 충돌
같은 부분을 서로 다르게 수정하면 Git이 자동으로 병합하지 못하고 충돌을 표시할 수 있습니다.
git status
충돌 파일에는 다음과 같은 표시가 들어갈 수 있습니다.
<<<<<<< HEAD
현재 브랜치 내용
=======
병합하려는 브랜치 내용
>>>>>>> 다른브랜치
두 내용을 검토해 최종 상태를 직접 결정하고 충돌 표시를 제거한 뒤 검사합니다. 내용을 이해하지 못한 상태에서 한쪽 변경을 일괄 선택하지 않습니다.
병합을 계속하기 전:
git diff
git status
로컬 브랜치 삭제
병합된 브랜치 삭제:
git branch -d docs/git-basic-guide
-d는 병합되지 않은 커밋이 남아 있으면 삭제를 거부합니다. -D는 이를 무시하고 강제 삭제하므로 기본 정리 명령으로 사용하지 않습니다.
삭제 전 확인:
git branch --merged
git log main..docs/git-basic-guide --oneline
원격 저장소 확인
git remote -v: 원격 저장소 목록
git remote -v
가져오기와 전송에 사용하는 원격 URL을 확인합니다.
origin은 일반적으로 기본 원격 저장소에 붙이는 이름이지만 반드시 origin이어야 하는 것은 아닙니다.
원격 저장소 상세 정보
git remote show origin
원격 URL, 기본 브랜치와 추적 브랜치 관계를 확인합니다. 이 명령은 원격 저장소에 연결할 수 있습니다.
원격 저장소 추가
git remote add origin https://github.com/example/project.git
이미 origin이 있으면 추가가 실패합니다. 먼저 git remote -v로 확인합니다.
원격 URL 확인:
git remote get-url origin
원격 URL 변경:
git remote set-url origin https://github.com/example/project.git
잘못된 저장소로 전송하지 않도록 변경 전후의 URL과 접근 권한을 확인합니다.
원격 변경 가져오기
git fetch: 원격 기록만 가져오기
git fetch origin
원격 저장소의 커밋과 참조를 내려받아 원격 추적 브랜치를 갱신하지만, 현재 작업 브랜치에 자동으로 병합하지는 않습니다.
가져온 뒤 차이 확인:
git status
git log --oneline HEAD..origin/main
git diff --stat HEAD..origin/main
원격 상태를 먼저 검토하고 병합 여부를 결정하고 싶을 때 유용합니다.
git pull: 가져오기와 통합
git pull
git pull은 원격 변경을 가져온 뒤 현재 브랜치에 통합합니다. 설정과 옵션에 따라 병합 또는 Rebase 방식이 사용될 수 있습니다.
실행 전 확인:
git status
git branch --show-current
git remote -v
커밋하지 않은 변경이 있거나 원격 이력을 먼저 검토해야 한다면 바로 git pull을 실행하지 말고 git fetch 후 차이를 확인합니다.
대상과 방식을 명확히 지정하는 예:
git pull --ff-only origin main
--ff-only는 Fast-forward로만 통합할 수 있을 때 진행하고, 분기된 이력에는 실패합니다. 실패했다고 다른 옵션을 무작정 추가하지 말고 로컬과 원격 이력을 확인합니다.
원격 저장소로 전송
git push: 로컬 커밋 전송
현재 브랜치와 연결된 원격 추적 브랜치로 전송:
git push
처음 브랜치를 전송하며 추적 관계 설정:
git push --set-upstream origin docs/git-basic-guide
짧은 옵션:
git push -u origin docs/git-basic-guide
전송 전 확인:
git status
git branch --show-current
git remote -v
git log --oneline origin/main..HEAD
원격 저장소에 비밀정보, 대용량 생성 파일이나 불필요한 기록을 전송하지 않는지 확인합니다.
강제 전송 주의
git push --force는 원격 브랜치 기록을 덮어써 다른 사람의 커밋을 잃게 할 수 있습니다. 공동 작업 브랜치와 기본 브랜치에서 기본 해결 방법으로 사용하지 않습니다.
Rebase나 커밋 수정 후 강제 전송이 꼭 필요한 상황에서도 대상 브랜치, 원격 변경과 팀 규칙을 확인하고 사용자 승인을 받은 뒤 진행합니다. --force-with-lease가 원격 변경을 확인하는 보호 장치를 제공하지만 무조건 안전한 명령은 아닙니다.
작업 임시 보관
git stash: 커밋하지 않은 변경 임시 보관
git stash push -m "작업 중인 문서 수정"
기본 동작은 추적 중인 파일의 변경을 임시 보관합니다. 추적하지 않는 새 파일은 기본적으로 포함되지 않습니다.
새 파일까지 포함하려면:
git stash push --include-untracked -m "새 파일 포함 임시 보관"
보관 목록:
git stash list
보관 내용 확인:
git stash show --patch stash@{0}
임시 보관 내용 적용
목록을 유지하면서 적용:
git stash apply stash@{0}
적용에 성공한 후 별도로 목록에서 삭제:
git stash drop stash@{0}
git stash pop은 적용 후 항목 제거를 시도합니다. 충돌 가능성이 있거나 내용을 먼저 확인해야 할 때는 apply와 drop을 나누는 편이 안전합니다.
변경 되돌리기
되돌리기는 대상이 작업 폴더인지, 스테이징 영역인지, 커밋인지에 따라 명령이 다릅니다. 먼저 상태와 차이를 확인합니다.
git status
git diff
git diff --staged
git log -5 --oneline
스테이징만 취소
파일의 작업 내용은 유지하면서 스테이징 영역에서 내립니다.
git restore --staged README.md
확인:
git status
git diff README.md
작업 폴더 변경 폐기
git diff README.md
git restore README.md
새로 만든 Untracked 파일은 git restore로 삭제되지 않습니다.
공개된 커밋을 새 커밋으로 되돌리기
git revert 커밋ID
기존 커밋을 삭제하는 대신 반대 변경을 담은 새 커밋을 만듭니다. 이미 공유한 브랜치의 이력을 보존하면서 변경을 취소할 때 사용할 수 있습니다.
실행 전 확인:
git show 커밋ID
git status
병합 커밋과 여러 커밋을 되돌리는 작업은 추가 판단이 필요하므로 별도 절차를 확인합니다.
git reset 주의
git reset은 모드와 대상에 따라 브랜치, 스테이징 영역과 작업 폴더를 바꿀 수 있습니다.
--soft: 브랜치 위치를 바꾸고 스테이징과 작업 폴더를 유지- 기본
--mixed: 브랜치와 스테이징 영역을 바꾸고 작업 폴더를 유지 --hard: 브랜치, 스테이징 영역과 작업 폴더를 모두 지정 상태로 변경
특히 git reset --hard는 커밋하지 않은 변경을 잃게 할 수 있습니다. 현재 저장소와 복구 기준을 확인하지 않은 상태에서 자동으로 실행하지 않습니다.
원격에 공유한 커밋을 reset으로 다시 쓴 뒤 강제 전송하면 다른 사용자의 기록에도 영향을 줄 수 있습니다. 공개 이력은 일반적으로 git revert를 먼저 검토합니다.
Untracked 파일 정리 주의
git clean은 Git이 추적하지 않는 파일과 폴더를 삭제할 수 있습니다. 빌드 결과뿐 아니라 아직 커밋하지 않은 작업 파일도 대상이 될 수 있으므로 초보자 기본 정리 명령으로 사용하지 않습니다.
삭제가 필요한 경우에도 먼저 Dry Run 옵션으로 대상을 확인하고, 보존할 파일을 별도로 검토해야 합니다. 이 문서의 기본 실습에서는 git clean을 실행하지 않습니다.
태그 관리
태그는 일반적으로 릴리스처럼 특정 커밋에 이름을 붙일 때 사용합니다.
태그 목록 확인
git tag
주석이 있는 태그 생성
git tag -a v1.0.0 -m "첫 번째 릴리스"
확인:
git show v1.0.0
태그 전송
git push origin v1.0.0
일반 git push는 모든 로컬 태그를 자동으로 보내지 않을 수 있습니다. 태그 삭제나 이름 변경은 배포 자동화와 다른 사용자의 기록에 영향을 줄 수 있으므로 별도로 확인합니다.
도움말 보기
간단한 도움말
git --help
git status --help
git add --help
터미널 안에서 짧은 사용법 확인:
git status -h
git add -h
공식 문서 확인
웹 형식의 공식 문서를 열 수 있는 환경에서는 다음 명령을 사용할 수 있습니다.
git help --web status
명령과 옵션은 Git 버전에 따라 달라질 수 있으므로 현재 설치된 버전의 도움말과 Git 공식 문서를 함께 확인합니다.
기본 실습
다음 실습은 기존 프로젝트가 아닌 새 연습 폴더에서 수행하는 예시입니다. 이번 문서 작성 과정에서는 별도 실습 저장소에서 직접 실행하지 않았습니다.
1단계: 연습 폴더 생성
mkdir git-practice
cd git-practice
pwd
기존 파일이 없는 새 폴더인지 확인합니다.
ls -la
2단계: Git 저장소 초기화
git init
git status
3단계: 파일 생성
printf '# Git Practice\n' > README.md
확인:
cat README.md
git status --short
4단계: 첫 커밋 준비
git add README.md
git status
git diff --staged
5단계: 첫 커밋
git commit -m "README 추가"
확인:
git status
git log --oneline
사용자 이름과 이메일이 설정되지 않았다면 Git이 커밋을 중단하고 설정 방법을 안내할 수 있습니다. 안내된 값을 검토해 전역 또는 저장소별 범위로 설정한 뒤 다시 실행합니다.
6단계: 파일 수정과 비교
printf '\nGit 상태와 변경을 확인하는 연습입니다.\n' >> README.md
git status --short
git diff README.md
7단계: 두 번째 커밋
git add README.md
git diff --staged
git commit -m "README 설명 추가"
8단계: 브랜치 생성
git switch -c docs/example
git branch --show-current
9단계: 브랜치에서 파일 추가
printf 'Git branch practice\n' > branch-note.txt
git add branch-note.txt
git diff --staged
git commit -m "브랜치 연습 파일 추가"
10단계: 기본 브랜치 확인과 병합
저장소의 기본 브랜치 이름을 확인합니다.
git branch
기본 브랜치가 main이라면 다음과 같이 실행합니다.
git switch main
git merge docs/example
환경에 따라 초기 브랜치 이름이 다를 수 있으므로 예시의 main을 그대로 가정하지 않습니다.
11단계: 최종 기록 확인
git status
git log --oneline --graph --decorate --all
이 실습에서는 원격 저장소를 등록하거나 git push를 실행하지 않습니다.
자주 사용하는 기본 명령 요약
| 명령 | 기능 |
|---|---|
git --version |
Git 버전 확인 |
git config |
Git 설정 확인과 변경 |
git init |
현재 폴더에 새 Git 저장소 생성 |
git clone |
원격 저장소 복제 |
git status |
작업 폴더와 스테이징 상태 확인 |
git diff |
스테이징 전 변경 내용 확인 |
git diff --staged |
커밋 예정 변경 확인 |
git add |
변경을 스테이징 영역에 추가 |
git commit |
스테이징한 변경을 로컬 저장소에 기록 |
git log |
커밋 이력 확인 |
git show |
특정 커밋의 내용 확인 |
git branch |
브랜치 목록, 생성과 삭제 |
git switch |
브랜치 이동 또는 생성 후 이동 |
git merge |
다른 브랜치의 변경 통합 |
git remote |
원격 저장소 정보 관리 |
git fetch |
원격 기록을 가져오고 추적 브랜치 갱신 |
git pull |
원격 변경을 가져와 현재 브랜치에 통합 |
git push |
로컬 커밋과 참조를 원격 저장소로 전송 |
git stash |
커밋하지 않은 변경 임시 보관 |
git restore --staged |
작업 내용은 유지하고 스테이징 취소 |
git restore |
지정 파일의 작업 폴더 변경 폐기 |
git revert |
기존 커밋을 취소하는 새 커밋 생성 |
git tag |
특정 커밋에 태그 지정 |
핵심 정리
Git 작업에서는 명령보다 상태 확인이 먼저입니다.
pwd
git status
git branch --show-current
git remote -v
커밋 전에는 작업 폴더의 변경과 스테이징한 변경을 나누어 확인합니다.
git diff
git diff --staged
필요한 파일만 스테이징하고 커밋합니다.
git add 파일명
git diff --staged
git commit -m "변경 내용을 설명하는 메시지"
원격 작업 전에는 현재 브랜치, 원격 URL과 전송할 커밋을 확인합니다.
git branch --show-current
git remote -v
git log --oneline origin/main..HEAD
git restore, git reset, git clean, 강제 브랜치 삭제와 강제 전송은 변경이나 기록을 잃게 할 수 있습니다. 대상, 영향 범위와 복구 기준을 확인하지 않은 상태에서 자동으로 실행하지 않습니다.
주의 사항과 한계
- Git의 기본 브랜치 이름은 저장소와 설정에 따라
main,master또는 다른 이름일 수 있습니다. - Git 명령과 옵션은 설치된 Git 버전에 따라 다를 수 있으므로
git --version,-h와 공식 문서를 확인합니다. git add .은 현재 폴더 아래의 예상하지 않은 파일까지 스테이징할 수 있으므로 전후에git status와git diff --staged를 확인합니다..gitignore는 이미 커밋된 비밀정보를 과거 기록에서 제거하지 않습니다. 노출된 인증정보는 즉시 폐기·교체합니다.git commit --amend, Rebase,git reset과 강제 전송은 커밋 ID와 공유 이력을 바꿀 수 있습니다.git reset --hard,git restore와git clean은 커밋하지 않은 변경을 잃게 할 수 있습니다.- 원격 브랜치 삭제, 강제 전송과 기본 브랜치 이름 변경은 공동 작업, 배포와 자동화에 영향을 줄 수 있으므로 사용자와 협업자의 확인 없이 실행하지 않습니다.
- 이 문서는 Git CLI 입문 범위를 다루며 Rebase, Cherry-pick, Bisect, Submodule, Hooks, 서명, Git LFS와 저장소 기록 재작성 전체를 대신하지 않습니다.
작성 및 검증 정보
- 작성자: apple2ne1
- 검토자: apple2ne1
- 직접 수행 여부: 이번 문서 작성 과정에서는 별도 실습 저장소에서 명령을 직접 실행하지 않음
- 마지막 문서 검토일: 2026-08-14
- 검증 방법: Git 공식 명령 문서와 Pro Git의 저장소 상태, 기록, 브랜치, 원격 저장소 및 되돌리기 설명을 대조
참고 자료 및 출처
- Git Reference — Git 명령별 최신 공식 설명 확인 — 2026-08-14
- @@INLINE_0@@ — 작업 폴더, 스테이징 영역과 Untracked 파일 표시 범위 확인 — 2026-08-14
- @@INLINE_0@@ — 작업 폴더, 스테이징 영역과 커밋 비교 방식 확인 — 2026-08-14
- @@INLINE_0@@ — 변경 스테이징과 대화형 선택 방식 확인 — 2026-08-14
- @@INLINE_0@@ — 커밋 생성,
-a와--amend동작 확인 — 2026-08-14 - @@INLINE_0@@ — 스테이징 취소와 작업 폴더 변경 복원 범위 확인 — 2026-08-14
- @@INLINE_0@@ —
--soft,--mixed와--hard의 영향 범위 확인 — 2026-08-14 - @@INLINE_0@@ — 원격 참조와 원격 추적 브랜치 갱신 동작 확인 — 2026-08-14
- @@INLINE_0@@ — 원격 변경 가져오기와 현재 브랜치 통합 동작 확인 — 2026-08-14
- @@INLINE_0@@ — 원격 참조 갱신과 강제 전송 옵션 확인 — 2026-08-14
- Pro Git — Git의 세 가지 상태, 기본 작업 흐름, 브랜치와 원격 저장소 개념 확인 — 2026-08-14
관련 문서
- Additional-learning MOC
- Linux 기본 명령어
- Docker 기본 명령어

