Skip to content

Latest commit

ย 

History

History
717 lines (494 loc) ยท 15.1 KB

File metadata and controls

717 lines (494 loc) ยท 15.1 KB

Git Cheat Sheet ํ•œ๊ตญ์–ด

Git Logo

๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” Git ๋ช…๋ น์–ด๋“ค์˜ ๋น ๋ฅธ ์ฐธ์กฐ ๊ฐ€์ด๋“œ, ์‰ฌ์šด ์‚ฌ์šฉ์„ ์œ„ํ•ด ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ์ •๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“– ์†Œ๊ฐœ

์ด Git ์น˜ํŠธ ์‹œํŠธ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” Git ๋ช…๋ น์–ด๋“ค์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๋ณด์ž๋ถ€ํ„ฐ ์ˆ™๋ จ๋œ ๊ฐœ๋ฐœ์ž๊นŒ์ง€, ๋ชจ๋“  ์ˆ˜์ค€์˜ ์‚ฌ์šฉ์ž๊ฐ€ Git ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.


๐Ÿ“– ์ด ๊ฐ€์ด๋“œ์— ๋Œ€ํ•ด

์ด ํฌ๊ด„์ ์ธ Git ์ฐธ์กฐ ๊ฐ€์ด๋“œ๋Š” Git ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ์™„์ „ํ•œ ๋ฆฌ์†Œ์Šค์ž…๋‹ˆ๋‹ค. Git ์—ฌ์ •์„ ์‹œ์ž‘ํ•˜๋Š” ์ดˆ๋ณด์ž๋ถ€ํ„ฐ ์ˆ™๋ จ๋œ ๊ฐœ๋ฐœ์ž๊นŒ์ง€, ์ด ๊ฐ€์ด๋“œ๋Š” ๊ฐœ๋ฐœ ๊ณผ์ •์„ ๊ฐ€์†ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ฒด๊ณ„์ ์ด๊ณ  ๋ถ„๋ฅ˜๋œ ๋ช…๋ น์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:

  • ์ฒด๊ณ„์ ์ธ ์นดํ…Œ๊ณ ๋ฆฌ: ๋ช…๋ น์–ด๋“ค์ด ๋ช…ํ™•ํ•˜๊ณ  ๋…ผ๋ฆฌ์ ์ธ ๊ทธ๋ฃน์œผ๋กœ ์ •๋ฆฌ๋จ
  • ์‹ค์šฉ์ ์ธ ์˜ˆ์ œ: ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ํ•จ๊ป˜ ์ œ๊ณต
  • ์ดˆ๋ณด์ž ์นœํ™”์ : ๋ช…ํ™•ํ•œ ์„ค๋ช…๊ณผ ํŒ ํฌํ•จ
  • ๋น ๋ฅธ ์ฐธ์กฐ: ํ•„์ˆ˜ ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ๋น ๋ฅธ ์ ‘๊ทผ

๐Ÿ“‘ ๋ชฉ์ฐจ


๐Ÿ”ง ์ดˆ๊ธฐ ์„ค์ •

๊ฐœ์ธ ์ •๋ณด๋กœ Git์„ ์„ค์ •ํ•˜์„ธ์š”:

# ์‚ฌ์šฉ์ž ์ด๋ฆ„ ์„ค์ •
git config --global user.name "๋‹น์‹ ์˜ ์ด๋ฆ„"

# ์ด๋ฉ”์ผ ์„ค์ •
git config --global user.email "email@example.com"

# ํ˜„์žฌ ์„ค์ • ๋ณด๊ธฐ
git config --list

# ๊ธฐ๋ณธ ์—๋””ํ„ฐ ์„ค์ •
git config --global core.editor "nano"

# ๋จธ์ง€ ๋„๊ตฌ ์„ค์ •
git config --global merge.tool vimdiff

โš™๏ธ ์„ค์ • ํŒŒ์ผ

Git์€ ์—ฌ๋Ÿฌ ๋ ˆ๋ฒจ์—์„œ ์„ค์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

์ „์—ญ ์„ค์ • ํŒŒ์ผ

# ์ „์—ญ ์„ค์ • ํŒŒ์ผ ๊ฒฝ๋กœ
~/.gitconfig

# ์ „์—ญ ์„ค์ • ํŽธ์ง‘
git config --global --edit

์ €์žฅ์†Œ๋ณ„ ์„ค์ • ํŒŒ์ผ

# ์ €์žฅ์†Œ๋ณ„ ์„ค์ • ํŒŒ์ผ ๊ฒฝ๋กœ
.git/config

# ์ €์žฅ์†Œ๋ณ„ ์„ค์ • ํŽธ์ง‘
git config --edit

์‹œ์Šคํ…œ ์ „์ฒด ์„ค์ •

# ์‹œ์Šคํ…œ ์„ค์ • ํŒŒ์ผ (๊ด€๋ฆฌ์ž ๊ถŒํ•œ ํ•„์š”)
/etc/gitconfig

# ์‹œ์Šคํ…œ ์„ค์ • ํŽธ์ง‘
git config --system --edit

์œ ์šฉํ•œ ์„ค์ •๋“ค

# ์ปฌ๋Ÿฌ ์ถœ๋ ฅ ํ™œ์„ฑํ™”
git config --global color.ui true

# ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋ช… ์„ค์ •
git config --global init.defaultBranch main

# ์ค„ ๋ฐ”๊ฟˆ ์ฒ˜๋ฆฌ (macOS/Linux)
git config --global core.autocrlf input

# ์ค„ ๋ฐ”๊ฟˆ ์ฒ˜๋ฆฌ (Windows)
git config --global core.autocrlf true

๐Ÿ“ ์ €์žฅ์†Œ ์„ค์ •

์ƒˆ ์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ:

# ์ƒˆ Git ์ €์žฅ์†Œ ์ƒ์„ฑ
git init

# ๊ธฐ์กด ์ €์žฅ์†Œ ํด๋ก 
git clone <์ €์žฅ์†Œ-url>

# ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ์— ํด๋ก 
git clone <์ €์žฅ์†Œ-url> <๋””๋ ‰ํ† ๋ฆฌ-์ด๋ฆ„>

๐Ÿ“Š ์ƒํƒœ ๋ช…๋ น์–ด

์ €์žฅ์†Œ ์ƒํƒœ ํ™•์ธ:

# ์ €์žฅ์†Œ์˜ ํ˜„์žฌ ์ƒํƒœ ๋ณด๊ธฐ
git status

# ์งง์€ ํ˜•์‹์œผ๋กœ ์ƒํƒœ ๋ณด๊ธฐ
git status -s

# ์ถ”์ ๋˜์ง€ ์•Š๋Š” ํŒŒ์ผ์„ ๋ฌด์‹œํ•˜๊ณ  ์ƒํƒœ ๋ณด๊ธฐ
git status --ignored

# ์ˆ˜์ •๋œ ํŒŒ์ผ์˜ ์ฐจ์ด์  ๋ณด๊ธฐ
git diff

# ์Šคํ…Œ์ด์ง• ์˜์—ญ์˜ ์ฐจ์ด์  ๋ณด๊ธฐ
git diff --staged

# ๋ธŒ๋žœ์น˜ ๊ฐ„ ์ฐจ์ด์  ๋ณด๊ธฐ
git diff <๋ธŒ๋žœ์น˜1> <๋ธŒ๋žœ์น˜2>

๐Ÿ“ ํŒŒ์ผ ๊ด€๋ฆฌ

ํŒŒ์ผ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐ:

# ํŠน์ • ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์ถ”๊ฐ€
git add <ํŒŒ์ผ>

# ๋ชจ๋“  ์ˆ˜์ •๋œ ํŒŒ์ผ ์ถ”๊ฐ€
git add .

# ํŠน์ • ํƒ€์ž…์˜ ๋ชจ๋“  ํŒŒ์ผ ์ถ”๊ฐ€
git add *.txt

# ๋Œ€ํ™”ํ˜•์œผ๋กœ ์ถ”๊ฐ€
git add -i

# ์ €์žฅ์†Œ์™€ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํŒŒ์ผ ์ œ๊ฑฐ
git rm <ํŒŒ์ผ>

# ์ €์žฅ์†Œ์—์„œ๋งŒ ํŒŒ์ผ ์ œ๊ฑฐ (๋””๋ ‰ํ† ๋ฆฌ์—๋Š” ์œ ์ง€)
git rm --cached <ํŒŒ์ผ>

# ํŒŒ์ผ ์ด๋™/์ด๋ฆ„ ๋ณ€๊ฒฝ
git mv <์†Œ์Šค-ํŒŒ์ผ> <๋Œ€์ƒ-ํŒŒ์ผ>

๐Ÿ’พ ์ปค๋ฐ‹

์ €์žฅ์†Œ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ €์žฅ:

# ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ์ปค๋ฐ‹
git commit -m "์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€"

# ๋ชจ๋“  ์ˆ˜์ •๋œ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ปค๋ฐ‹
git commit -am "์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€"

# ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹ ์ˆ˜์ •
git commit --amend

# ๋นˆ ์ปค๋ฐ‹ (CI/CD ํŠธ๋ฆฌ๊ฑฐ์— ์œ ์šฉ)
git commit --allow-empty -m "CI ํŠธ๋ฆฌ๊ฑฐ"

# ์ƒ์„ธํ•œ ๋ฉ”์‹œ์ง€๋กœ ์ปค๋ฐ‹ (์—๋””ํ„ฐ ์—ด๋ฆผ)
git commit

๐ŸŒฟ ๋ธŒ๋žœ์น˜

๋ธŒ๋žœ์น˜ ์ž‘์—…:

# ๋ชจ๋“  ๋ธŒ๋žœ์น˜ ๋ณด๊ธฐ
git branch

# ์›๊ฒฉ ๋ธŒ๋žœ์น˜ ๋ณด๊ธฐ
git branch -r

# ๋ชจ๋“  ๋ธŒ๋žœ์น˜ ๋ณด๊ธฐ (๋กœ์ปฌ๊ณผ ์›๊ฒฉ)
git branch -a

# ์ƒˆ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
git branch <๋ธŒ๋žœ์น˜-์ด๋ฆ„>

# ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜
git checkout <๋ธŒ๋žœ์น˜-์ด๋ฆ„>

# ์ƒˆ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑํ•˜๊ณ  ์ „ํ™˜
git checkout -b <๋ธŒ๋žœ์น˜-์ด๋ฆ„>

# ํŠน์ • ์ปค๋ฐ‹์—์„œ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
git checkout -b <๋ธŒ๋žœ์น˜-์ด๋ฆ„> <์ปค๋ฐ‹-ํ•ด์‹œ>

# ๋ธŒ๋žœ์น˜ ์‚ญ์ œ
git branch -d <๋ธŒ๋žœ์น˜-์ด๋ฆ„>

# ๊ฐ•์ œ๋กœ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ
git branch -D <๋ธŒ๋žœ์น˜-์ด๋ฆ„>

# ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ
git branch -m <์ƒˆ-์ด๋ฆ„>

# ํŠน์ • ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ
git branch -m <์˜›-์ด๋ฆ„> <์ƒˆ-์ด๋ฆ„>

๐Ÿ”€ ๋จธ์ง€

๋ธŒ๋žœ์น˜ ๊ฐ„ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋จธ์ง€:

# ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜ ๋จธ์ง€
git merge <๋ธŒ๋žœ์น˜-์ด๋ฆ„>

# ํŒจ์ŠคํŠธ-ํฌ์›Œ๋“œ ์—†์ด ๋จธ์ง€ (๋จธ์ง€ ์ปค๋ฐ‹ ์ƒ์„ฑ)
git merge --no-ff <๋ธŒ๋žœ์น˜-์ด๋ฆ„>

# ํŒจ์ŠคํŠธ-ํฌ์›Œ๋“œ์ผ ๋•Œ๋งŒ ๋จธ์ง€
git merge --ff-only <๋ธŒ๋žœ์น˜-์ด๋ฆ„>

# ์ง„ํ–‰ ์ค‘์ธ ๋จธ์ง€ ์ทจ์†Œ
git merge --abort

# ์ถฉ๋Œ ํ•ด๊ฒฐ ํ›„ ๋จธ์ง€ ๊ณ„์†
git merge --continue

๐ŸŒ ์›๊ฒฉ ์ €์žฅ์†Œ

์›๊ฒฉ ์ €์žฅ์†Œ ๊ด€๋ฆฌ:

# ์›๊ฒฉ ์ €์žฅ์†Œ ๋ณด๊ธฐ
git remote

# URL๊ณผ ํ•จ๊ป˜ ์›๊ฒฉ ์ €์žฅ์†Œ ๋ณด๊ธฐ
git remote -v

# ์›๊ฒฉ ์ €์žฅ์†Œ ์ถ”๊ฐ€
git remote add <์ด๋ฆ„> <url>

# ์›๊ฒฉ ์ €์žฅ์†Œ URL ๋ณ€๊ฒฝ
git remote set-url <์ด๋ฆ„> <์ƒˆ-url>

# ์›๊ฒฉ ์ €์žฅ์†Œ ์ œ๊ฑฐ
git remote remove <์ด๋ฆ„>

# ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ‘ธ์‹œ
git push <์›๊ฒฉ> <๋ธŒ๋žœ์น˜>

# ๋ธŒ๋žœ์น˜ ํ‘ธ์‹œํ•˜๊ณ  ์ถ”์  ์„ค์ •
git push -u <์›๊ฒฉ> <๋ธŒ๋žœ์น˜>

# ๋ชจ๋“  ๋ธŒ๋žœ์น˜ ํ‘ธ์‹œ
git push --all

# ํƒœ๊ทธ ํ‘ธ์‹œ
git push --tags

# ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋‹ค์šด๋กœ๋“œ
git pull <์›๊ฒฉ> <๋ธŒ๋žœ์น˜>

# ๋จธ์ง€ ์—†์ด ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋‹ค์šด๋กœ๋“œ
git fetch <์›๊ฒฉ>

# ๋ชจ๋“  ์›๊ฒฉ ๋ธŒ๋žœ์น˜ ๋‹ค์šด๋กœ๋“œ
git fetch --all

๐Ÿ“š ํžˆ์Šคํ† ๋ฆฌ์™€ ๋กœ๊ทธ

์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ ํƒ์ƒ‰:

# ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ ๋ณด๊ธฐ
git log

# ์ปค๋ฐ‹๋‹น ํ•œ ์ค„๋กœ ํžˆ์Šคํ† ๋ฆฌ ๋ณด๊ธฐ
git log --oneline

# ๊ทธ๋ž˜ํ”„์™€ ํ•จ๊ป˜ ํžˆ์Šคํ† ๋ฆฌ ๋ณด๊ธฐ
git log --graph

# ํŠน์ • ํŒŒ์ผ์˜ ํžˆ์Šคํ† ๋ฆฌ ๋ณด๊ธฐ
git log <ํŒŒ์ผ>

# ์ปค๋ฐ‹ ํ†ต๊ณ„ ๋ณด๊ธฐ
git log --stat

# ๊ฐ ์ปค๋ฐ‹์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ณด๊ธฐ
git log -p

# ๋งˆ์ง€๋ง‰ N๊ฐœ ์ปค๋ฐ‹ ๋ณด๊ธฐ
git log -n <์ˆซ์ž>

# ๋‚ ์งœ ๋ฒ”์œ„ ๋‚ด ์ปค๋ฐ‹ ๋ณด๊ธฐ
git log --since="2023-01-01" --until="2023-12-31"

# ์ž‘์„ฑ์ž๋ณ„ ์ปค๋ฐ‹ ๋ณด๊ธฐ
git log --author="์ž‘์„ฑ์ž ์ด๋ฆ„"

# ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์—์„œ ๊ฒ€์ƒ‰
git log --grep="ํ‚ค์›Œ๋“œ"

๐Ÿ” ๊ฒ€์ƒ‰

ํŒŒ์ผ๊ณผ ๋‚ด์šฉ ๊ฒ€์ƒ‰:

# ํŒŒ์ผ ๋‚ด์šฉ์—์„œ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰
git grep "๊ฒ€์ƒ‰์–ด"

# ํŠน์ • ์ปค๋ฐ‹์—์„œ ๊ฒ€์ƒ‰
git grep "๊ฒ€์ƒ‰์–ด" HEAD~3

# ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์ด ๊ฒ€์ƒ‰
git grep -i "๊ฒ€์ƒ‰์–ด"

# ์ •ํ™•ํ•œ ๋‹จ์–ด๋งŒ ๊ฒ€์ƒ‰
git grep -w "๊ฒ€์ƒ‰์–ด"

# ์ค„ ๋ฒˆํ˜ธ์™€ ํ•จ๊ป˜ ๊ฒ€์ƒ‰
git grep -n "๊ฒ€์ƒ‰์–ด"

# ๋งค์นญ๋œ ํŒŒ์ผ ์ด๋ฆ„๋งŒ ํ‘œ์‹œ
git grep -l "๊ฒ€์ƒ‰์–ด"

# ๋กœ๊ทธ์—์„œ ํŠน์ • ํ…์ŠคํŠธ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๊ฒ€์ƒ‰
git log -S "๊ฒ€์ƒ‰์–ด"

# ์ •๊ทœํ‘œํ˜„์‹์œผ๋กœ ๋กœ๊ทธ ๊ฒ€์ƒ‰
git log --grep="ํŒจํ„ด" --perl-regexp

# ํŒŒ์ผ๋ช… ๊ฒ€์ƒ‰
git ls-files | grep "ํŒจํ„ด"

๐Ÿท๏ธ ํƒœ๊ทธ

๋ฒ„์ „ ํƒœ๊ทธ ๊ด€๋ฆฌ:

# ๋ชจ๋“  ํƒœ๊ทธ ๋ณด๊ธฐ
git tag

# ๊ฐ€๋ฒผ์šด ํƒœ๊ทธ ์ƒ์„ฑ
git tag <ํƒœ๊ทธ-์ด๋ฆ„>

# ์ฃผ์„์ด ๋‹ฌ๋ฆฐ ํƒœ๊ทธ ์ƒ์„ฑ
git tag -a <ํƒœ๊ทธ-์ด๋ฆ„> -m "ํƒœ๊ทธ ๋ฉ”์‹œ์ง€"

# ํŠน์ • ์ปค๋ฐ‹์— ํƒœ๊ทธ ์ƒ์„ฑ
git tag -a <ํƒœ๊ทธ-์ด๋ฆ„> <์ปค๋ฐ‹-ํ•ด์‹œ>

# ํƒœ๊ทธ ์ •๋ณด ๋ณด๊ธฐ
git show <ํƒœ๊ทธ-์ด๋ฆ„>

# ๋กœ์ปฌ ํƒœ๊ทธ ์‚ญ์ œ
git tag -d <ํƒœ๊ทธ-์ด๋ฆ„>

# ์›๊ฒฉ ํƒœ๊ทธ ์‚ญ์ œ
git push --delete <์›๊ฒฉ> <ํƒœ๊ทธ-์ด๋ฆ„>

# ํŠน์ • ํƒœ๊ทธ ํ‘ธ์‹œ
git push <์›๊ฒฉ> <ํƒœ๊ทธ-์ด๋ฆ„>

# ๋ชจ๋“  ํƒœ๊ทธ ํ‘ธ์‹œ
git push <์›๊ฒฉ> --tags

๐Ÿ“ ์ด๋™/์ด๋ฆ„ ๋ณ€๊ฒฝ

ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ ๊ด€๋ฆฌ:

# ํŒŒ์ผ ์ด๋™/์ด๋ฆ„ ๋ณ€๊ฒฝ
git mv <๊ธฐ์กด-ํŒŒ์ผ> <์ƒˆ-ํŒŒ์ผ>

# ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„ ๋ณ€๊ฒฝ
git mv <๊ธฐ์กด-๋””๋ ‰ํ† ๋ฆฌ> <์ƒˆ-๋””๋ ‰ํ† ๋ฆฌ>

# ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
git mv file1.txt file2.txt directory/

# ๋Œ€์†Œ๋ฌธ์ž๋งŒ ๋ณ€๊ฒฝ (๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ํŒŒ์ผ์‹œ์Šคํ…œ)
git mv filename.txt temp.txt
git mv temp.txt FileName.txt

# ํŒŒ์ผ ์ด๋™ ํ›„ ํžˆ์Šคํ† ๋ฆฌ ํ™•์ธ
git log --follow <ํŒŒ์ผ>

# ์ด๋™๋œ ํŒŒ์ผ ์ถ”์ 
git log --stat -M

# ์ด๋ฆ„ ๋ณ€๊ฒฝ ๊ฐ์ง€ ์ž„๊ณ„๊ฐ’ ์„ค์ •
git log --follow -M90% <ํŒŒ์ผ>

โ†ฉ๏ธ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋˜๋Œ๋ฆฌ๊ธฐ

์ˆ˜์ •์‚ฌํ•ญ ๋˜๋Œ๋ฆฌ๊ธฐ:

# ํŠน์ • ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ทจ์†Œ
git checkout <ํŒŒ์ผ>

# ๋ชจ๋“  ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ทจ์†Œ
git checkout .

# ํŠน์ • ๋ฒ„์ „์œผ๋กœ ํŒŒ์ผ ๋˜๋Œ๋ฆฌ๊ธฐ
git checkout <์ปค๋ฐ‹-ํ•ด์‹œ> <ํŒŒ์ผ>

# ์Šคํ…Œ์ด์ง• ์˜์—ญ์—์„œ ํŒŒ์ผ ์ œ๊ฑฐ
git reset <ํŒŒ์ผ>

# ์Šคํ…Œ์ด์ง• ์˜์—ญ์—์„œ ๋ชจ๋“  ํŒŒ์ผ ์ œ๊ฑฐ
git reset

# ์ด์ „ ์ปค๋ฐ‹์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ (๋ณ€๊ฒฝ์‚ฌํ•ญ ์œ ์ง€)
git reset --soft HEAD~1

# ์ด์ „ ์ปค๋ฐ‹์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ (๋ณ€๊ฒฝ์‚ฌํ•ญ ์ทจ์†Œ)
git reset --hard HEAD~1

# ํŠน์ • ์ปค๋ฐ‹์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
git reset --hard <์ปค๋ฐ‹-ํ•ด์‹œ>

# ๋‹ค๋ฅธ ์ปค๋ฐ‹์„ ์ทจ์†Œํ•˜๋Š” ์ƒˆ ์ปค๋ฐ‹ ์ƒ์„ฑ
git revert <์ปค๋ฐ‹-ํ•ด์‹œ>

# ์—ฌ๋Ÿฌ ์ปค๋ฐ‹ ๋˜๋Œ๋ฆฌ๊ธฐ
git revert <ํ•ด์‹œ-์‹œ์ž‘>..<ํ•ด์‹œ-๋>

๐Ÿ“ฆ ์Šคํƒœ์‹œ

์ž„์‹œ๋กœ ์ž‘์—… ์ €์žฅ:

# ํ˜„์žฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์Šคํƒœ์‹œ์— ์ €์žฅ
git stash

# ์„ค๋ช…์  ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ์ €์žฅ
git stash save "์„ค๋ช…์  ๋ฉ”์‹œ์ง€"

# ๋ชจ๋“  ์Šคํƒœ์‹œ ๋ณด๊ธฐ
git stash list

# ๋งˆ์ง€๋ง‰ ์Šคํƒœ์‹œ ์ ์šฉ
git stash apply

# ํŠน์ • ์Šคํƒœ์‹œ ์ ์šฉ
git stash apply stash@{0}

# ๋งˆ์ง€๋ง‰ ์Šคํƒœ์‹œ ์ ์šฉํ•˜๊ณ  ์‚ญ์ œ
git stash pop

# ํŠน์ • ์Šคํƒœ์‹œ ์‚ญ์ œ
git stash drop stash@{0}

# ๋ชจ๋“  ์Šคํƒœ์‹œ ์‚ญ์ œ
git stash clear

# ์Šคํƒœ์‹œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ณด๊ธฐ
git stash show stash@{0}

# ์Šคํƒœ์‹œ์—์„œ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
git stash branch <๋ธŒ๋žœ์น˜-์ด๋ฆ„> stash@{0}

๐ŸŒŠ Git Flow

Git Flow๋Š” ํ”„๋กœ์ ํŠธ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„๋œ ์—„๊ฒฉํ•œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ธŒ๋žœ์นญ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ๋ธŒ๋žœ์น˜:

  • master/main: ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ
  • develop: ์ฃผ์š” ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜

์ง€์› ๋ธŒ๋žœ์น˜:

  • feature: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์œ„ํ•œ
  • release: ์ƒˆ ๋ฒ„์ „ ์ค€๋น„๋ฅผ ์œ„ํ•œ
  • hotfix: ํ”„๋กœ๋•์…˜ ๊ธด๊ธ‰ ์ˆ˜์ •์„ ์œ„ํ•œ

Git Flow ๋ช…๋ น์–ด:

# git flow ์ดˆ๊ธฐํ™”
git flow init

# ์ƒˆ ๊ธฐ๋Šฅ ์‹œ์ž‘
git flow feature start <๊ธฐ๋Šฅ-์ด๋ฆ„>

# ๊ธฐ๋Šฅ ์™„๋ฃŒ
git flow feature finish <๊ธฐ๋Šฅ-์ด๋ฆ„>

# ๊ธฐ๋Šฅ ๋ฐœํ–‰
git flow feature publish <๊ธฐ๋Šฅ-์ด๋ฆ„>

# ๋ฆด๋ฆฌ์Šค ์‹œ์ž‘
git flow release start <๋ฒ„์ „>

# ๋ฆด๋ฆฌ์Šค ์™„๋ฃŒ
git flow release finish <๋ฒ„์ „>

# ํ•ซํ”ฝ์Šค ์‹œ์ž‘
git flow hotfix start <๋ฒ„์ „>

# ํ•ซํ”ฝ์Šค ์™„๋ฃŒ
git flow hotfix finish <๋ฒ„์ „>

Git Flow ์—†๋Š” ์›Œํฌํ”Œ๋กœ์šฐ:

Git Flow Commands

# ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
git checkout develop
git checkout -b feature/์ƒˆ-๊ธฐ๋Šฅ

# ๊ธฐ๋Šฅ ์ž‘์—…
git add .
git commit -m "์ƒˆ ๊ธฐ๋Šฅ ์ถ”๊ฐ€"

# develop์— ๊ธฐ๋Šฅ ๋จธ์ง€
git checkout develop
git merge --no-ff feature/์ƒˆ-๊ธฐ๋Šฅ
git branch -d feature/์ƒˆ-๊ธฐ๋Šฅ

# ๋ฆด๋ฆฌ์Šค ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
git checkout develop
git checkout -b release/1.0.0

# ๋ฆด๋ฆฌ์Šค ์™„๋ฃŒ
git checkout master
git merge --no-ff release/1.0.0
git tag -a 1.0.0 -m "๋ฒ„์ „ 1.0.0"
git checkout develop
git merge --no-ff release/1.0.0
git branch -d release/1.0.0

๐Ÿ’ก ์œ ์šฉํ•œ ํŒ

์œ ์šฉํ•œ ๋ณ„์นญ:

# ์œ ์šฉํ•œ ๋ณ„์นญ ์„ค์ •
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.visual '!gitk'

.gitignore ํŒŒ์ผ:

# .gitignore ํŒŒ์ผ ์ƒ์„ฑ
echo "node_modules/" >> .gitignore
echo "*.log" >> .gitignore
echo ".env" >> .gitignore

# ์ด๋ฏธ ์ถ”์ ๋œ ํŒŒ์ผ ๋ฌด์‹œํ•˜๊ธฐ
git rm --cached <ํŒŒ์ผ>
echo "<ํŒŒ์ผ>" >> .gitignore
git add .gitignore
git commit -m ".gitignore์— ํŒŒ์ผ ์ถ”๊ฐ€"

๐Ÿ“– ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค

๊ณต์‹ ๋ฌธ์„œ ๋ฐ ๊ฐ€์ด๋“œ

์˜จ๋ผ์ธ ํ•™์Šต ์ž๋ฃŒ

GUI ๋„๊ตฌ

๊ณ ๊ธ‰ ์ฃผ์ œ


๐ŸŒ ๋‹ค๋ฅธ ์–ธ์–ด

์ด Git Cheat Sheet๋Š” ๋‹ค์Œ ์–ธ์–ด๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค:


๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ์„ธ์š”:

  1. ๋ฌธ์ œ ๋ณด๊ณ : ์˜ค๋ฅ˜๋‚˜ ๊ฐœ์„  ์ œ์•ˆ์„ ๊ณต์œ ํ•˜์„ธ์š”
  2. ์ƒˆ ์–ธ์–ด ์ถ”๊ฐ€: ๋ฒˆ์—ญ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด ๊ฒƒ์„ ๊ฐœ์„ ํ•˜์„ธ์š”
  3. ๋‚ด์šฉ ๊ฐœ์„ : ์ƒˆ๋กœ์šด ๋ช…๋ น์–ด, ์˜ˆ์ œ ๋˜๋Š” ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”
  4. ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต: ๊ฒฝํ—˜๊ณผ ์ œ์•ˆ์„ ๊ณต์œ ํ•˜์„ธ์š”

๊ธฐ์—ฌ ๋ฐฉ๋ฒ•:


๐Ÿ“„ ๋ผ์ด์„ผ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ผ์Šค ํ•˜์— ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.


โญ ์ด ์น˜ํŠธ ์‹œํŠธ๊ฐ€ ์œ ์šฉํ•˜๋‹ค๋ฉด ๋ณ„ํ‘œ๋ฅผ ์ฃผ์„ธ์š”!
Git๊ณผ ํ•จ๊ป˜ ์ฆ๊ฑฐ์šด ์ฝ”๋”ฉ ํ•˜์„ธ์š”! ๐Ÿš€