ipad commit 2025-12-17-01-15

This commit is contained in:
2025-12-17 01:17:13 +09:00
commit bab5060120
1962 changed files with 216780 additions and 0 deletions

View File

@@ -0,0 +1,303 @@
---
title: "Git 핵심 명령어 모음"
source: "https://www.heropy.dev/p/PcUkdT"
author:
- "[[ParkYoungWoong]]"
published: 2024-04-22
created: 2025-11-29
description: "버전 관리 시스템(VCS) Git에서 주로 사용하는 명령을 빠르게 정리합니다."
tags:
- "clippings"
---
![Git 핵심 명령어 모음](https://somwpkzlplaovldnfahk.supabase.co/storage/v1/object/public/heropy.dev_posts/PcUkdT/main.jpg)
버전 관리 시스템(VCS) [Git](https://git-scm.com/) 에서 주로 사용하는 명령을 빠르게 정리합니다.
## 구성 (Config)
구성(Config)은 운영체제 단위의 Git 환경 설정입니다.
개행 문자(Newline) 구성은 Windows와 Unix 계열 운영체제(macOS) 간의 줄바굼 호환성 문제를 방지하기 위한 설정입니다.
이름과 이메일은 버전 생성 시 작성자 정보를 표시하기 위함으로, GitHub 등의 서비스 사용자 정보와 달라도 무방하나 되도록 같게 작성하는 것이 좋습니다.
| 명령 | 설명 |
| --- | --- |
| `git -v` | Git 버전 확인 |
| `git config --global core.autocrlf input` | 개행 문자 설정 (macOS) |
| `git config --global core.autocrlf true` | 개행 문자 설정 (Windows) |
| `git config --global user.name '<이름>'` | 사용자 이름 설정 |
| `git config --global user.email '<이메일>'` | 사용자 이메일 설정 |
| `git config --global init.defaultBranch main` | Git v2.28 미만인 경우, 메인 브랜치 이름을 `main` 으로 설정 |
| `git config --global pull.rebase true` | `pull` 명령어 실행 시 리베이스를 기본 동작으로 설정 (선택) |
| `git config --global --list` | 구성 목록 확인 |
| `git config --global --unset <항목이름>` | 구성 항목 삭제 |
BASH
content\_copy
```bash
1
vim ~/.gitconfig
```
구성 파일을 직접 열어서 수정하는 경우
## 초기화 (Init)
초기화(Init)는 프로젝트 단위로 Git 버전 관리를 시작하는 기능입니다.
원격 별칭(Remote Alias)은 원격 저장소를 지칭하는 이름으로, 단일 원격인 경우 `origin` 을 사용하는 것을 추천합니다.
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git init` | 프로젝트 버전 관리 시작 | |
| `git remote` | 원격 저장소 목록 확인 | |
| `git remote -v` | 원격 저장소 URL 확인 | |
| `git remote add <원격별칭> <URL>` | 원격 저장소 추가 | `git remote add origin https://github.com/ParkYoungWoong/heropy.git` |
| `git clone <URL>` | 원격 저장소 복제 | `git clone https://github.com/ParkYoungWoong/heropy.git` |
| `rm -rf .git` | 버전 관리 초기화 (macOS) | |
| `rmdir /s .git` | 버전 관리 초기화 (Windows) | |
## 추적 (Track)
추적(Track)은 버전을 관리할 대상(파일)을 지정하는 것을 말합니다.
스테이징(Staging)은 추적 파일을 버전 생성을 위해 준비하는 것을 말합니다.
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git status` | 현재 브랜치의 변경사항 확인 | |
| `git add <파일>` | 특정 파일 추적 및 스테이징 | `git add ./src/main.js` |
| `git add .` | 모든 파일 추적 및 스테이징 | |
| `git mv <파일A> <파일B>` | 스테이징된 파일 이름 변경 | `git mv ./mnin.js ./main.js` |
| `git rm -r --cached <파일>` | 추적 목록에서 제거 (`.gitignore` 갱신) | `git rm -r --cached ./src` |
| `git clean -fdn` | 삭제 가능한 추적되지 않은 파일 목록 확인 | |
| `git clean -fd` | 추적되지 않은 파일 삭제 | |
| `git restore --staged <파일>` | 특정 파일 언스테이징 (v2.23) | `git restore --staged ./src/main.js` |
| `git restore --staged .` | 모든 파일 언스테이징 (v2.23) | |
## 버전 생성 (Commit)
버전 생성(Commit)은 현재 작업 내용을 하나의 버전으로 기록(생성)하는 것을 말합니다.
| 명령 | 설명 |
| --- | --- |
| `git commit -m '<메시지>'` | 버전 생성 (따옴표 닫기 전에는 메시지 줄바꿈 가능) |
| `git commit -am '<메시지>'` | 추적 파일 스테이징 및 버전 생성 |
| `git commit` > `i` > 메시지 입력 > `esc` > `:wq` | Vim 에디터로 메시지 작성 및 버전 생성 |
| `git commit --amend` | 직전 커밋을 현재 커밋으로 덮어쓰기, Empty Commit (이후 강력(`-f`) 푸시 필요) |
## 확인 (Log)
확인(Log)은 생성한 버전 내용이나 내역, 변경 사항, 작업자 등을 확인하는 것을 말합니다.
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git log` | 현재 브랜치의 버전 내역을 확인 | |
| `git log -<숫자>` | 숫자만큼만 최신 버전 내역 확인 | `git log -2` |
| `git log --all` | 모든 브랜치 내역 확인 | |
| `git log --oneline` | 간략한 버전 내역 확인 | |
| `git log --graph` | 그래프 형태로 버전 내역 확인 | |
| `git reflog` | 로컬의 모든 버전 관리 내역 확인 | |
| `git show` | 현재 브랜치의 최신 버전 확인 | |
| `git show <브랜치>` | 특정 브랜치의 최신 버전 확인 | `git show dev` |
| `git show <해시>` | 특정 버전 확인 | `git show 1a2b3c4d` |
| `git blame <파일>` | 특정 파일의 작업자 확인 | `git blame ./src/main.js` |
| `git blame -L <시작>,<종료> <파일>` | 특정 파일의 시작부터 종료 줄까지 작업자 확인 | `git blame -L 10,20 ./src/main.js` |
| `git blame -L <시작> <파일>` | 특정 파일의 시작부터 마지막 줄까지 작업자 확인 | `git blame -L 10 ./src/main.js` |
| `git blame -L ,<종료> <파일>` | 특정 파일의 처음부터 종료 줄까지 작업자 확인 | `git blame -L ,20 ./src/main.js` |
| `git branch --show-current` | 현재 브랜치 이름 확인 (v2.22) | |
## 브랜치 (Branch)
브랜치(Branch)는 프로젝트에서 여러 작업을 나눠 병렬로 진행할 수 있는, 버전 관리의 각 분기점을 의미합니다.
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git branch` | 로컬 브랜치 목록 확인 | |
| `git branch -r` | 원격 브랜치 목록 확인 | |
| `git branch -a` | 로컬 및 원격 브랜치 목록 확인 | |
| `git branch <브랜치>` | 브랜치 생성 | `git branch dev` |
| `git branch -D <브랜치>` | 브랜치 삭제 | `git branch -D dev` |
| `git branch -m <브랜치>` | 현재 브랜치 이름 변경 | `git branch -m main` |
| `git branch -m <이전브랜치> <새브랜치>` | 특정 브랜치 이름 변경 | `git branch -m master main` |
| `git branch --show-current` | 현재 브랜치 이름 확인 (v2.22) | |
| `git checkout <브랜치>` | 브랜치 전환 | `git checkout dev` |
| `git checkout -b <브랜치>` | 브랜치 생성 및 전환 | `git checkout -b dev` |
| `git checkout <해시>` | 특정 버전 체크아웃 | `git checkout 1a2b3c4d` |
| `git switch <브랜치>` | 브랜치 전환 (v2.23) | `git switch dev` |
| `git swtich -c <브랜치>` | 브랜치 생성 및 전환 (v2.23) | `git switch -c dev` |
## 밀어내기 (Push)
밀어내기(Push)는 로컬 저장소의 버전 내역을 원격 저장소로 업로드하는 기능입니다.
강제 플래그(`--force`, `-f`)는 충돌을 무시하고 원격 저장소를 덮어쓰므로, 확실한 경우에만 사용해야 합니다.
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git push <원격별칭> <브랜치>` | 원격 저장소로 밀어내기 | `git push origin dev` |
| `git push <원격별칭> --all` | 원격 저장소로 모든 브랜치 밀어내기 | `git push origin --all` |
| `git push <원격별칭> <브랜치> -f` | 원격 저장소로 강제(Force) 밀어내기 | `git push origin dev -f` |
| `git push <원격별칭> <브랜치> -u` | 원격 저장소로 밀어내기 후 생략 가능 | `git push origin dev -u` 이후 `git push` |
## 당겨오기 (Pull)
당겨오기(Pull)는 원격 저장소의 버전 내역을 로컬 저장소로 다운로드하는 기능입니다.
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git pull <원격별칭> <브랜치>` | 원격 저장소에서 브랜치 당겨오기 | `git pull origin dev` |
| `git pull --rebase <원격별칭> <브랜치>` | 원격 저장소의 브랜치로 로컬 브랜치 덮어쓰기 | `git pull --rebase origin dev` |
## 가져오기 (Fetch)
가져오기(Fetch)는 원격 저장소의 최신 내역을 로컬의 원격 내역과 동기화하는 기능으로, 로컬 브랜치에는 영향을 주지 않습니다.
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git fetch` | 현재 원격 저장소의 브랜치 목록 가져오기 | |
| `git fetch <원격별칭>` | 특정 원격 저장소의 브랜치 목록 가져오기 | `git fetch origin` |
| `git fetch --all` | 모든 원격 저장소의 브랜치 목록 가져오기 | |
| `git fetch --prune` | 원격 저장소에서 브랜치 목록 가져와서 로컬의 원격 브랜치 목록 덮어쓰기 | |
## 비교 (Diff)
비교(Diff)는 두 개의 버전이나 파일 등의 차이를 서로 비교하는 기능입니다.
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git diff <파일>` | 파일의 수정 내용 확인 | |
| `git diff <파일A> <파일B>` | A와 B 파일 비교 | |
| `git diff <브랜치>` | 특정 브랜치와 현재 브랜치 비교 | `git diff dev` |
| `git diff <브랜치A> <브랜치B>` | A와 B 브랜치 비교 | `git diff main dev` |
| `git diff <브랜치A>:<파일> <브랜치B>:<파일>` | A와 B 브랜치의 파일 비교 | `git diff main:src/main.js dev:src/main.js` |
| `git diff <해시>` | 현재 버전과 특정 버전 비교 | `git diff 1a2b3c4d` |
| `git diff <해시A> <해시B>` | A와 B 버전 비교 | `git diff 1a2b3c4d 5e6f7g8h` |
## 작업 취소 (Rollback)
롤백(Rollback)은 현재 작업 중인 변경 사항을 모두 취소하고 버리는 것을 말합니다.
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git checkout HEAD -- <파일>` | 특정 파일 롤백 | `git checkout HEAD -- ./src/main.js` |
| `git restore <파일>` | 특정 파일 롤백 (v2.23) | `git restore ./src/main.js` |
| `git restore .` | 모든 파일 롤백 (v2.23) | |
| `git reset --hard HEAD` | 모든 파일 롤백 | |
## 초기화 (Reset)
초기화(Reset)는 특정 버전으로 이동하고 그 이후 버전 내역을 제거하는 기능입니다.
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git reset --hard HEAD~<번호>` | 번호만큼 이전 버전으로 리셋 | `git reset --hard HEAD~2` |
| `git reset --hard HEAD~1` | 직전 버전으로 리셋 (`1` 버전 전으로) | |
| `git reset --hard HEAD~` | 직전 버전으로 리셋 (`1` 생략) | |
| `git reset --hard <해시>` | 특정 버전으로 리셋 | `git reset --hard 1a2b3c4d` |
| `git reset --hard HEAD^` | 마지막 버전을 삭제 | |
| `git reset --hard` | 수정 내용을 버림 | |
| `git reset --soft` | 수정 내용을 스테이징 | |
| `git reset --mixed` | 수정 내용을 스테이징하지 않음 | |
## 되돌리기 (Revert)
되돌리기(Revert)는 특정 버전을 취소하고 취소한 새로운 버전을 생성하는 기능입니다.
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git revert <해시>` | 특정 버전을 취소하고 새로운 버전 생성 | `git revert 1a2b3c4d` |
## 임시 저장 (Stash)
임시 저장(Stash)는 작업 중인 변경사항을 버전으로 생성하지 않고 별도로 저장하는 기능입니다.
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git stash list` | 임시 저장된 작업 목록 확인 | |
| `git stash` | 현재 작업을 임시 저장 | |
| `git stash -a` | 미추적 파일 포함, 임시 저장 | |
| `git stash -m '<메시지>'` | 메시지와 함께 현재 작업을 임시 저장 | |
| `git stash -am '<메시지>'` | 미추적 파일 포함, 메시지와 함께 현재 작업을 임시 저장 | |
| `git stash show <번호>` | 특정 번호의 임시 저장 내용 보기 | `git stash show 2` |
| `git stash apply` | 가장 최신의 임시 저장 내용을 현재 브랜치에 적용 | |
| `git stash apply <번호>` | 특정 번호의 임시 저장 내용을 현재 브랜치에 적용 | `git stash apply 2` |
| `git stash drop` | 가장 최신의 임시 저장 내용 삭제 | |
| `git stash drop <번호>` | 특정 번호의 임시 저장 내용 삭제 | `git stash drop 2` |
| `git stash pop` | 가장 최신의 임시 저장을 적용하고 목록에서 삭제 | |
| `git stash clean` | 모든 임시 저장 목록 삭제 | |
## 병합 (Merge)
병합(Merge)은 두 개의 브랜치를 하나로 합치는 기능입니다.
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git merge <브랜치>` | 현재 브랜치에 특정 브랜치 병합 | `git merge dev` |
| `git merge --abort` | 충돌 시, 병합 과정 중단 | |
병합을 통해 두 브랜치의 내용이 달라 충돌(Conflict)이 발생하는 경우, 충돌을 해결하고 다시 커밋해야 합니다.
'현재 변경 사항'은 현재 브랜치(`main`)의 작업 내용, '수신 변경 사항'은 병합할 브랜치(`dev`)의 작업 내용을 의미합니다.
충돌 해결 후 수정된 파일을 스태이징(`git add`)하고 병합 버전을 생성(`git commit`)해야 합니다.
content\_copy
```
12345
<<<<<< HEAD (현재 변경 사항)
main / abc
=======
dev / xyz
>>>>>> dev (수신 변경 사항)
```
## 재배치 (Rebase)
재배치(Rebase)는 현재 브랜치의 내역을 대상 브랜치의 최신 버전 다음으로 배치(이동)하는 기능입니다.
content\_copy
```
123
(main)-- A - B - C
\
(dev)----- D - E
```
재배치 전 (Before)
content\_copy
```
1
(main)-- A - B - C - D - E
```
재배치 후 (After)
| 명령 | 설명 | 예시 |
| --- | --- | --- |
| `git rebase <브랜치>` | 현재 브랜치를 대상 브랜치로 재배치 | `git rebase main` |
| `git rebase --continue` | 재배치 계속 진행 | |
| `git rebase --abort` | 재배치 과정 중단 | |
다음은 `dev` 브랜치를 `main` 브랜치로 재배치하는 과정입니다.
1. `git checkout dev`: 재배치할 브랜치로 전환.
2. `git rebase main`: 현재 브랜치(`dev`)를 대상 브랜치(`main`)로 재배치 시작.
3. 충돌(Conflict) 발생 시 해결.
4. `git add .`: 충돌 해결 후 스테이징.
5. `git rebase --continue`: 재배치 계속 진행.
6. 버전 메시지 수정 및 저장(`:wq`).
7. 3~6번 과정 반복 및 재배치 완료!
58
끝까지 읽어주셔서 감사합니다.
좋아요와 응원 댓글은 블로그 운영에 큰 힘이 됩니다!
---
segment