๐ Today I Learned - ์ค๋ ๋ด๊ฐ ๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํฉ๋๋ค.
๐ ์ค๋์ ๋ชฉํ
โ๏ธ ๊ณผ์
๐ซ ๊ฐ์ธ๋ชฉํ
Spring JPA ํ๋ก์ ํธ
[Spring] JPA Entity
git๊ป ๊ฐ๋ฐํ์ผ๋, git๊น๋๊ฒ git์ฐ๊ธฐ
ํ์
ํ๋ก๊ทธ๋๋ฐ์ ์ํ ํ์ ๊ด๋ฌธ(์ด์ง๋ง ์ ์ฐ๊ธฐ ์ด๋ ต๋ค๐คฆ)
๐ฅย ์ฝ๋ ์ถฉ๋(conflit): ์ ๋ ์๋ ์์ผ๋ ๊ทน๋ณตํ์
- ๊ฐ์ ๊ณณ์ ๊ฐ์ ๋ธ๋์น์์ ์์
ํ ํ merge ํ ์ํฉ
- ์ถฉ๋์ ํด๊ฒฐํ๊ณ "merge commit"์ ํ๋ฉด ๊ทธ๋ํ๊ฐ ์ปค์ง ์ ๋ฐ์ ์๋ค == ์ฐ๋ฐฉ์ฐ
- rebase ๋ฐฉ์์ด ํ์ค์ด ๋์ง ๋ชปํ ์ด์ โ ๐ค ์ํ์ฑ์ด ์๋ค
- base(dev) ์์ ๋ช
๋ น์ด
git merge "์์
๋ธ๋์น1"
- ์์
๋ธ๋์น2 ์์
git rebase dev ํ๋๋ rebase ์ถฉ๋ ๋ฐ์
- confilt์ ํด๊ฒฐํ๊ณ
git rebase โconfinue
- base(dev) ์์ ๋ค์
git merge "์์
๋ธ๋์น2"
- ์์
๋ธ๋์น2๋ remote์ ์ด๋ฏธ ์ฌ๋ผ๊ฐ ์๋ commit์ ๊ฐ์ ๋ก ๋ฎ์ด์ฐ๋ฉด์
git push โforce
- ์์
๋ธ๋์น1์ ๋ค์ base(dev) ๊ธฐ์ค์ผ๋ก rebase ํด์ผ ํ๋ค
โ ์ปค๋ฐํ๊ธฐ ์ ์ ํ๋ฒ pull ๋ฐ๊ณ rebase ํ๋ ์์
์ด ๋ฐ๋์ ํ์ํ๋ค
๐ย ์ ํ์ ๋ฐ์(cherry-pick): "๋ฐฐํฌ" ๋๋ "์๋ ์ปค๋ฐ ๋์ด๋ฆฌ๊ธฐ"
- ๋ฐ์๋ ํ์๊ฐ ์๋ ์ปค๋ฐ์ ๋ค๋ฅธ ์ปค๋ฐ์ผ๋ก pull ๋ฐ์ ๊ฒ์ฒ๋ผ ๋ง๋ ๋ค.
- ์ค์ ์ปค๋ฐ๋ ํด์์ฝ๋์ cherry-pick ํ ํด์์ฝ๋๋ ๋ค๋ฅด๋ค.
- base์ ์์
๋ธ๋์น์ ํด์์ฝ๋๋ฅผ ๋น๊ตํด๋ณด๋ฉด์ ํ์ฌ ์ํ๊ฐ ๋ชจ๋ pull ๋์ด์๋์ง ํ์ธ
- ๋ฐฐํฌ ์์ (dev ๐ main) ์ ์ผ๋ถ ์ปค๋ฐ์ด ์ค๋ ๋ฐฐํฌ๋๋ฉด ์๋๋ ์ํฉ
git merge dev โno-ff -m โrelease/##โ
- ๋ฐฐํฌ๋์ด์๋ ์๋๋ ์ปค๋ฐ๊น์ง ๋ฐฐํฌ๋์ด๋ฒ๋ฆฐ๋ค.
- ์๋ก์ด ๋ฐฐํฌ์ฉ ๋ธ๋์น๋ฅผ ํ๋ ๋ฐ์ dev์์ cherry-pickํ ์ปค๋ฐ๋ง ๋ฐฐํฌํ๋ค.
- ๊ทธ ๋ค์ dev ๋ ๋ฐ์๋์ง ์์ ์ปค๋ฐ ์ธ ๋ฐฐํฌ ์๋ฃ๋ ์ํ๋ฅผ ๋ง์ถฐ์ผํ๋ค.
- ๋ฐฐํฌ ํ์๋ dev์์ main ๊ธฐ์ค์ผ๋ก rebase๊ฐ ํ์ํ๋ค.
- ์ฐ๊ด์ด ๋์ด์๋๋ฐ ์ผ๋ถ๋ง cherry-pick ํ๋ ๊ฒฝ์ฐ๋ ๋ณ๋ก ์๋ค
- ์ฐ๊ด์ด ์์ผ๋ฉด ๊ทธ์ ์ squash ํด์ ํ๋๋ก ํฉ์ณ์ฃผ์ธ์!
๐ ์ฝ๋ ๋๋๋ฆฌ๊ธฐ(Rollback): ์ฅ์ ๋ฐ์ ์ด์ ์ผ๋ก ๊ฐ๊ธฐ
- reset(Hard) : ์ฅ์ ๋๋ ์ด์ ๋ฅผ ์์ ๋ฒ๋ฆผ == ์ฌ๊ณ ์น๊ณ ๋ฎ์ด๋ฒ๋ฆฌ๊ธฐ
- ์ฅ์ ๊ด๋ฆฌ๋ฅผ ํ์ง ์๊ณ reset ํด๋ฒ๋ฆฌ๋ฉด ์ฅ์ ๊ฐ ๋ฌ๋ ์์ธ์ ๋ถ์ํ๊ธฐ ์ด๋ ค์์ง๊ณ ๊ฐ์ ์ค์๋ฅผ ๋ฐ๋ณตํ ํ๋ฅ ์ด ๋ ๋๋ค
- revert: ์ฅ์ ๊ฐ ๋๊ธฐ ์ ์ผ๋ก ๋ค์ ์ ์ปค๋ฐ์ ๋ง๋๋ ์์
๐พ ์์
์์์ ์ฅ(stach): ๋ ๋๋ ์์
commit ํ๊ธฐ ์ ๋งคํ ๋
- stach: ์์
๋ด์ฉ์ ์ปค๋ฐ์ ํ๊ธฐ ์ ๋งคํ ์ํฉ์ธ๋ฐ pull์ ๋ฐ์์ผ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ๋ช
๋ น์ด
- working directory ๋ผ๋ ๊ณต๊ฐ์ ์์๋ก ์ ์ฅํด๋๋ค.
- pull์ ๋ฐ์ ์ํ๋ฅผ ๋ง์ถฐ์ฃผ๊ณ ๋ค์ ๋ด ์์
์ ์ด์ด์ ์์
ํ ์ ์๋ค.
โณ git flow : ์ด๊ฒ ๋ฐ๋ก git์ ์ ์
- main
- hotfixes
- release_branches
- develop
- feature_branches
์ฌ์ฉ ํ๊ฒฝ๊น์ง ๊ณ ๋ คํด์ ์ฌ์ฉํด์ผํ๋ค. (์ค๋ฌด์์๋ ํ์ฌ๋ง๋ค ๋ค๋ฅด๋ค.)
๐งย git์ โํด์์ฝ๋โ๋ฅผ ์ ์๊น๊ฒ ๋ด์ผํ๋ค.
๊ณผ์ +โบ
API ๋ช
์ธ์ ์์ฑ๊ณผ ERD ์์ฑ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๊ธฐํํ๋ฉฐ ๋ ์ค๋ฅธ ์์ด๋์ด๋ฅผ ์ ๋ฆฌ
๐ ๊ณผ์ ๊ฐ ์๋ฃ๋๋ฉด ์ถ๊ฐ๋ก ์ ์ฉํด๋ณด๊ธฐ
- ๋ก๊ทธ์ธ JWT
- ๊ณ์ธตํ ๋๊ธ ๊ตฌํ
๐ฉ ๋ด์ผ ํ ์ผ
โ๏ธ ๊ณผ์
๐ญ ์ผ๊ธฐ
๐ ํจ์จ์ ์ธ ํ์ต๊ณผ ๊ธฐ๋ก์ ์ํด TIL ์์์ ๋ฐ๊ฟ๋ณด์๋ค!
( ์์ง์ ํฌ์คํ
์ ์์ฑํ์๋ ๊ฐ๋ฐ์๋ถ๋ค์ ๋ฐ๋ผ๊ฐ๊ธฐ ์ํด ์ด๊ฒ์ ๊ฒ ์๋ ์ค์ด๋ค. )
๊ธฐ์กด์ ๊ฐ์๋ด์ฉ์ ๊ทธ๋๋ก ์ฐ๊ฑฐ๋ ํธ๋ฌ๋ธ์ํ
, ๋ฆฌํฉํ ๋ง ๋ด์ฉ์ TIL์ ์ ์ผ๋ ๋ค์ ์ฐพ์ ์ฝ๊ธฐ ์ด๋ ค์ ํ์ต๋ด์ฉ์ด๋ ํธ๋ฌ๋ธ์ํ
์ ๋ฐ๋ก ํฌ์คํ
ํ์ฌ ๋งํฌํ๊ณ TIL์๋ ๊ทธ ํฌ์คํ
๋ด์ฉ์ ์์ฝํ์ฌ ์ ๋ฆฌ ํ ์์ ์ด๋ค.
์ด ์์๋ ๋นํจ์จ์ ์ด๋ผ ์๊ฐ์ด ๋ค๋ฉด ๋ค์ ๋ฐ๋ ์ ์์ง๋ง ์ ์ง์ ์ผ๋ก ๋ฐ์ ํด๊ฐ๋ ๊ณผ์ ์ด๋ผ๊ณ ์๊ฐํ์.