๐ด branch
branch๋ ํน์ commit์ ๋ํ ์ฐธ์กฐ์ด๊ธฐ ๋๋ฌธ์ branch๋ฅผ ๋ง์ด ๋ง๋ค์ด๋ ๋ฉ๋ชจ๋ฆฌ๋ ๋์คํฌ ๊ณต๊ฐ์ ๋ถ๋ด์ด ๋์ง ์๋๋ค.
๋ฐ๋ผ์, ์์ ์ ์ปค๋ค๋ branch๋ก ๋ง๋ค๊ธฐ๋ณด๋ค๋ ์์ ๋จ์๋ก ์๊ฒ ๋๋๋ ๊ฒ์ด ์ข๋ค.
branch๋ "ํ๋์ commit๊ณผ ๊ทธ ๋ถ๋ชจ commit๋ค์ ํฌํจํ๋ ์์ ๋ด์ญ"์ด๋ผ๊ณ ๊ธฐ์ตํ์.
option
// ํ์ฌ branch ํ์ธํ๊ธฐ
git branch
// ์์ธํ ์ ๋ณด๋ฅผ ํฌํจํ ํ์ฌ branch ํ์ธํ๊ธฐ
git branch -v
// branch ์์ฑ
git branch [New Branch Name] [Diverge Branch Name]
// ํ์ฌ HEAD branch ์ด๋ํ๊ธฐ
git checkout [Move Branch Name]
// branch ์ญ์ ํ๊ธฐ
git branch -D [Delete Branch Name]
// ๋ก์ปฌ ๋ถ๊ธฐ๋ฅผ ์ญ์ ํ์์๋ ์๊ฒฉ ๋ถ๊ธฐ๊ฐ ๋จ์์์ ๋
git remote prune origin
// branch ์ด๋ฆ ๋ณ๊ฒฝํ๊ธฐ
git branch -m [Current Branch Name] [Modified Branch Name]
// branch ์์ฑ๊ณผ ๋์์ checkout
git checkout -b [New Branch Name]
// branch commit ์์น ์ด๋
git branch -f [Moved Branch Name] [Target Branch Name]
๐ merge
merge๋ ๋ ๊ฐ์ ๋ถ๋ชจ๋ฅผ ๊ฐ๋ฆฌํค๋ ํน๋ณํ commit์ ๋ง๋ค์ด๋ธ๋ค.
์ด๋ ํ ๋ถ๋ชจ์ ๋ชจ๋ ์์ ๋ด์ญ๊ณผ ๋๋จธ์ง ๋ถ๋ชจ์ ๋ชจ๋ ์์ , ๊ทธ๋ฆฌ๊ณ ๋ ๋ถ๋ชจ์ ๋ชจ๋ ๋ถ๋ชจ๋ค์ ์์ ๋ด์ญ์ ํฌํจํ๋ค.
๐ก rebase
rebase๋ commit๋ค์ ๋ชจ์์ ๋ณต์ฌํ ๋ค, ๋ค๋ฅธ ๊ณณ์ ๋จ๊ถ ๋๋๋ค.
commit์ ํ๋ฆ์ ๋ณด๊ธฐ ์ข๊ฒ ํ ์ค๋ก ์ ๋ฆฌํ ์ ์๋ ์ฅ์ ์ด ์๋ค.
๐ข HEAD
HEAD๋ ํ์ฌ checkout ๋ commit์ ๊ฐ๋ฆฌํจ๋ค. ์ฆ, ํ์ฌ ์์ ์ค์ธ commit์ ๋งํ๋ค.
๐ต Relative Reference
ํด์๋ก commit์ ๊ตฌ๋ถํ๋ ๊ฒ์ด ๋ถํธํ๋ ๊ฒ์ ํด์์์ผ์ค๋ค.
โช ์บ๋ฟ์ฐ์ฐ์(^) ํ ๋ฒ์ ํ commit ์๋ก ์ฌ๋ผ๊ฐ๋ค.
โช ~<num> ํ ๋ฒ์ num commit ์๋ก ์ฌ๋ผ๊ฐ๋ค.
๐ฃ reset & revert
reset
ํ์ฌ๊น์ง ์์ ํ๋ ์ด๋ ฅ๋ค์ ๋ชจ๋ ์ง์ฐ๊ณ ์ํ๋ commit ์์ ์ผ๋ก ๋์๊ฐ๋ค.
commit ์ด๋ ฅ๋ค์ ์ง์ฐ๊ธฐ ๋๋ฌธ์ ์๊ฒฉ repository์ history๊ฐ ๊ผฌ์ผ ์๋ ์๋ค.
// commit ๋ ํ์ผ๋ค์ staging area๋ก ๋๋ ค๋์ (commit ํ๊ธฐ ์ ์ํ)
git reset --soft [Commit ID]
// commit ๋ ํ์ผ๋ค์ working directory๋ก ๋๋ ค๋์ (add ํ๊ธฐ ์ ์ํ)
git reset --mixed [Commit ID]
// commit ๋ ํ์ผ๋ค ์ค tracked ํ์ผ๋ค์ working directory์์ ์ญ์ ํ๋ค.
git reset --hard [Commit ID]
// ํ์ฌ๋ก๋ถํฐ ์ํ๋ ๋งํผ์ commit์ด ์ญ์ ๋๋ค.
git reset HEAD~10
// ๊ฐ์ฅ ์ต๊ทผ commit์ด ์ทจ์๋๋ค.
git reset HEAD^
revert
ํ์ฌ๊น์ง ์์ ํ๋ ์ด๋ ฅ๋ค์ ๊ทธ๋๋ก ๋๋ ์ฑ๋ก ์ํ๋ commit ์์ ์ผ๋ก ๋์๊ฐ๋ค.
commit ์ด๋ ฅ๋ค์ ์ง์ฐ์ง ์์ ์ฑ ์๋ก commit์ ํ๋ ๊ฐ๋ ์ด๋ฏ๋ก history๊ฐ ์ ์ง๋๋ค.
// ํด๋น commit์ผ๋ก ๋์๊ฐ๋ค.
git revert [Commit ID]
๐ค cherry-pick
๐ด stash
๐ Gitmoji
๐ก tag
๐ข with remote storage
๐ต ์๊ฐํ
๐ฃ Reference