Skip to content

Latest commit

ย 

History

History
216 lines (124 loc) ยท 9.83 KB

File metadata and controls

216 lines (124 loc) ยท 9.83 KB

git

์ด ๊ธ€์€ https://learngitbranching.js.org/?locale=ko ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์“ฐ์—ฌ์กŒ์Šต๋‹ˆ๋‹ค.

Local

git status

git status ๋ช…๋ น์–ด๋Š” ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ(working directory)์™€ ์Šคํ…Œ์ด์ง• ์˜์—ญ(staging area)์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ

์ด๋ฅผ ์•Œ๊ธฐ์œ„ํ•ด git status๋ฅผ ํ•œ๋ฒˆ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ž.

gitStatus

ํ˜„์žฌ git status๋ฅผ ํ™•์ธํ•ด ๋ณด๋ฉด Untracked file์ด๋ผ๋Š” ์˜์—ญ์ด ๋ณด์ผ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ ์นœ ํŒŒ์ผ์ด ์—†์–ด ํ˜„์žฌ๋Š” ์ €๊ฒƒ ๋ฐ–์— ๋œจ์ง€ ์•Š์ง€๋งŒ ์›๋ž˜ 3๊ฐ€์ง€ ์˜์—ญ์ด ์žˆ๋‹ค.

  • Changes to be committed: ์ด ์˜์—ญ์€ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ๋„˜์–ด๊ฐ€ ์žˆ๋Š” ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • Changes not staged for commit: ์ด ์˜์—ญ์€ ์•„์ง ์›Œํ‚น ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • Untracked files: ์ด ์˜์—ญ๋„ ์•„์ง ์›Œํ‚น ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ์•„์ง ํ•œ ๋ฒˆ๋„ ํ•ด๋‹น Git ์ €์žฅ์†Œ๊ฐ€ ๊ด€๋ฆฌํ•œ ์ ์ด ์—†๋Š” ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์Šคํ…Œ์ด์ง• ์˜์—ญ, ์›Œํ‚น ๋””๋ ‰ํ† ๋ฆฌ๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๊ฐ„๋žตํžˆ ์งš๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ๋‹ค.

์›Œํ‚น ๋””๋ ‰ํ† ๋ฆฌ๋ž€ ๋‚ด๊ฐ€ ์ˆ˜์ •ํ•˜๊ณ  ์žˆ๋Š” ํŒŒ์ผ์ด ์žˆ๋Š” ํด๋”๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์ž์‹ ์ด ์ž‘์—…ํ•˜๋Š” ์˜์—ญ์ด ์›Œํ‚น ๋””๋ ‰ํ† ๋ฆฌ.

์Šคํ…Œ์ด์ง• ์˜์—ญ์ด๋ž€ ์ปค๋ฐ‹์„ ํ•˜๊ธฐ์œ„ํ•ด git add ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€๋œ ํŒŒ์ผ๋“ค์ด ์žˆ๋Š” ์˜์—ญ

add

git add ๋ช…๋ น์–ด๋Š” ์ปค๋ฐ‹ ํ•˜๊ธฐ ๊นŒ์ง€์˜ ๋ณ€๊ฒฝ๋ถ€๋ถ„์„ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด๋‹ค. add ๋ช…๋ น์–ด๋Š” ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ทธ์ € ์–ด๋А ์ •๋„ ๋ฐ”๊ฟจ๋Š”์ง€ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•„๋ฌด๋ฆฌ ๋งŽ์€ add ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด๋„ Git ์ €์žฅ์†Œ์— ์–ด๋–ค ์˜ํ–ฅ๋„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

๋จผ์ € ์ฒซ๋ฒˆ ์งธ๋Š” ์ž‘์—… ํ•œ ๊ฒƒ์„ ์ผ๋ถ€ํ•œ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ์ด๋‹ค.

git add <ํŒŒ์ผ>

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ๋ถ€๋งŒ ์ถ”๊ฐ€ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” git add ๋’ค์— ์ง์ ‘์ ์œผ๋กœ ์ถ”๊ฐ€ํ•  ๊ฒƒ์„ ์ž…๋ ฅํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.

git add .

์ด๋ ‡๊ฒŒ add ๋’ค์— .์„ ์ ๊ฒŒ๋˜๋ฉด ๋ชจ๋“  ์ˆ˜์ •์‚ฌํ•ญ์„ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์ถ”๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

git add -A

๊ทธ๋ฆฌ๊ณ  git add .๊ณผ ๋น„์Šทํ•œ -A๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‘๊ฐ€์ง€์˜ ์ฐจ์ด์ ์€ ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ˆ˜์ •์‚ฌํ•ญ์„ ํฌํ•จํ•˜๋ƒ ์•ˆํ•˜๋ƒ ์ด๋‹ค. git add . ์€ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„ ํด๋”๋กœ๋งŒ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์ถ”๊ฐ€ํ•˜์ง€๋งŒ git add -A๋Š” ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ถ€ํ„ฐ ๋ชจ๋‘ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ -p ์†์„ฑ์ด ์žˆ๋‹ค

git add -p

์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด, ๊ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ„ฐ๋ฏธ๋„์—์„œ ์ง์ ‘ ๋ˆˆ์œผ๋กœ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉด์„œ ์Šคํ…Œ์ด์ง• ์˜์—ญ์œผ๋กœ ๋„˜๊ธฐ๊ฑฐ๋‚˜ ๋˜๋Š” ์ œ์™ธํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

commit

๊ฐ„๋‹จํžˆ ์ปค๋ฐ‹์ด๋ž€ git add ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•œ ๊ธฐ๋ก์„ ์ €์žฅํ•˜๋Š” ํ–‰์œ„๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

ํ˜„์žฌ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๋Š” ์ปค๋ฐ‹, HEAD๋ฅผ c0, ์ฆ‰ ์ด๊ณณ์„ main ๋ธŒ๋žœ์น˜๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งŒ์ผ ์ด ๊ณณ์—์„œ ์ฝ”๋“œ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๋ณด์ž.

const a = "a";

๊ทธ๋Ÿฐ๋ฐ ์›Œํ‚น ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •

const a = "a";
console.log(a);

๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ git add .์œผ๋กœ ์Šคํ…Œ์ด์ง• ์˜์—ญ์œผ๋กœ ๋„˜๊ฒผ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค. ์ด ๋•Œ ์ €ํฌ๋Š” git commit ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

git commit ๋ช…๋ น์–ด๋Š” git ์ €์žฅ์†Œ์— ๊ธฐ๋กํ•˜๋Š” ํ–‰์œ„๋กœ git add์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ €์žฅ์†Œ์— ์˜ํ–ฅ์„ ์ค€๋‹ค.

git commit

์ด๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด HEAD, c0์—์„œ c1์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์ด ๊ธฐ๋ก ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

gitcommit

๋‹น์—ฐํ•œ ์†Œ๋ฆฌ์ง€๋งŒ ์ด ๋•Œ c0์™€ c1, ๋‘ ์ปค๋ฐ‹์— ๋‚ด์šฉ์€ ๋‹ค๋ฅด๋‹ค. c0๋Š” ์›๋ž˜ ์ ํ˜€์žˆ๋˜ ๋‚ด์šฉ, c1๋Š” ๋ฐ”๊พธ๊ณ  ๋‚œ ํ›„ ๊ธฐ๋กํ•œ ๋‚ด์šฉ

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ commit ๋ช…๋ น์–ด์˜ ์˜ต์…˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

git commit -m "๋ฉ”์„ธ์ง€"
git commit -a
git commit -am "๋ฉ”์„ธ์ง€"

์˜ต์…˜์ด ๋งค์šฐ ๋งŽ๊ธฐ์— ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ๋งŒ ์ ์–ด๋†“์•˜๋‹ค.

-m ์˜ต์…˜๋ถ€ํ„ฐ ์•Œ์•„๋ณด์ž๋ฉด massage๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์œผ๋กœ "๋ฉ”์„ธ์ง€"์™€ ํ•จ๊ป˜ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์œ„์— ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ฝ˜์†”๋กœ๊ทธ๋ฅผ ์ถ”๊ฐ€ ํ•˜์˜€์œผ๋ฏ€๋กœ git commit -m "add: console.log"๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์ด ๋ฉ”์„ธ์ง€์™€ ํ•จ๊ป˜ ๊ธฐ๋ก๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ปค๋ฐ‹์ด ์–ด๋–ค ์ปค๋ฐ‹์ธ์ง€ ์•Œ์•„๋ณด๊ธฐ ์‰ฝ๋„๋ก ๋ง์ด๋‹ค.

-a ์ด๋Š” git add์™€ git commit์„ ํ•ฉ์นœ ๊ฒƒ.

-am ์ด ์˜ต์…˜์€ -a,-m์„ ํ•œ๋ฒˆ์— ์ž‘์—…ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฉ”์„ธ์ง€๋ฅผ ์ ์„ ๋•Œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ๋˜ํ•œ ์ด ์ปค๋ฐ‹์ด ์™œ ๋‚˜์™”๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์‰ฝ๊ฒŒ ๋ฉ”์„ธ์ง€๋ฅผ ์ž‘์„ฑํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ง€๊ธˆ๋ถ€ํ„ฐ ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€ ์ž‘์„ฑ ๊ทœ์น™์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

git commit message rule

๋จผ์ € ๋ฉ”์„ธ์ง€๋ฅผ ์ ์„ ๋•Œ ๊ทœ์น™์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์ด ์žˆ๋‹ค.

  • ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ์„ ๋นˆ ํ–‰์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค
  • ์ œ๋ชฉ์„ 50๊ธ€์ž ๋‚ด๋กœ ์ œํ•œ
  • ์ œ๋ชฉ ์ฒซ ๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑ
  • ์ œ๋ชฉ ๋์— ๋งˆ์นจํ‘œ ๋„ฃ์ง€ ์•Š๊ธฐ
  • ์ œ๋ชฉ์€ ๋ช…๋ น๋ฌธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ณผ๊ฑฐํ˜•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค
  • ๋ณธ๋ฌธ์˜ ๊ฐ ํ–‰์€ 72๊ธ€์ž ๋‚ด๋กœ ์ œํ•œ
  • ์–ด๋–ป๊ฒŒ ๋ณด๋‹ค๋Š” ๋ฌด์—‡๊ณผ ์™œ๋ฅผ ์„ค๋ช…ํ•œ๋‹ค

๋ฟ๋งŒ์ด๋‚˜๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ type๋„ ์ ์–ด์ค˜์•ผ ํ•œ๋‹ค.

  • FEAT : ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์˜ ์ถ”๊ฐ€
  • FIX: ๋ฒ„๊ทธ ์ˆ˜์ •
  • DOCS: ๋ฌธ์„œ ์ˆ˜์ •
  • STYLE: ์Šคํƒ€์ผ ๊ด€๋ จ ๊ธฐ๋Šฅ(์ฝ”๋“œ ํฌ๋งทํŒ…, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ์ž์ฒด์˜ ๋ณ€๊ฒฝ์ด ์—†๋Š” ๊ฒฝ์šฐ)
  • REFACTOR: ์ฝ”๋“œ ๋ฆฌํŽ™ํ† ๋ง
  • TEST: ํ…Œ์ŠคํŠธ ์ฝ”ํŠธ, ๋ฆฌํŽ™ํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€
  • CHORE: ๋นŒ๋“œ ์—…๋ฌด ์ˆ˜์ •, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์ˆ˜์ •(ex .gitignore ์ˆ˜์ • ๊ฐ™์€ ๊ฒฝ์šฐ)

branch

๋ธŒ๋žœ์น˜๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ ๋ช‡๊ฐ€์ง€๋งŒ ์งš์–ด๋ณด์ž๋ฉด ๋จผ์ € ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์–ด๋–ค ํŠน์ • ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ๋–„ ํ•œ๋ฒˆ์— ๋งŒ๋“ค ์ž์‹ ์ด ์—†๋Š” ์ƒํ™ฉ ๊ฐœ๋ฐœํ•˜๋‹ค ์ฝ”๋“œ๊ฐ€ ๊ผฌ์ผ๊ฑฐ ๊ฐ™์€ ๋А๋‚Œ์ด ๋“ค๋•Œ, ๋˜ ํ˜‘์—…ํ•  ๋•Œ ๋™์‹œ์— ์—ฌ๋Ÿฌ์‚ฌ๋žŒ์ด ๊ฐ™์€ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. ๊ณผ์—ฐ ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ... ์ด๋ฅผ ํ•ด๊ฒฐ ํ•˜๊ธฐ์œ„ํ•ด ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” master or main ๋ธŒ๋žœ์น˜๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

git branch [๋ธŒ๋žœ์น˜์ด๋ฆ„]

๊ทธ๋Ÿฌ๋ฉด ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„ ๋ณด๊ฒ ๋‹ค.

ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” c1, main ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๋‹ค.

branch

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ๋˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๋Š” c1 ์ž๋ฆฌ์— ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

branch

์ด์ œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ํ†ตํ•ด์„œ ์ปค๋ฐ‹์„ ํ•ด๋ณด๊ฒ ๋‹ค.

branch

๋‹ค์Œ ์ฒ˜๋Ÿผ main ๋ธŒ๋žœ์น˜๋Š” ์ˆ˜์ •๋˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋งŒ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด๋•Œ main ๋ธŒ๋žœ์น˜๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์ปค๋ฐ‹ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

branch

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์ปค๋ฐ‹์ด ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ํŒŒ๊ฒŒ ๋œ๋‹ค๋ฉด main ๋ธŒ๋žœ์น˜์™€๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ธŒ๋žœ์น˜๊ฐ€ ๋Š˜์–ด๋‚˜๋‹ค๋ณด๋ฉด ์ด ํ”„๋กœ์ ํŠธ์— ์–ด๋–ค ๋ธŒ๋žœ์น˜๊ฐ€ ์žˆ์—ˆ๋Š”์ง€ ํ—ท๊ฐˆ๋ฆฌ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก์„ ํ™•์ธํ•ด๋ณด๊ฒ ๋‹ค.

git branch --list

branch

์—ฌ๊ธฐ์„œ ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ์„ ํƒ? ์‚ฌ์šฉ์ค‘์ธ? ๋ธŒ๋žœ์น˜๋Š” *ํ‘œ์‹œ๊ฐ€ ๋’ค์— ๋ถ™๊ฒŒ ๋œ๋‹ค.

git branch --list 'feature/*'

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜ ํ™•์ธ์ธ๋ฐ ์ด๋Š” ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๊ทœ์น™์— ์ด์œ ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋’ค์—์„œ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๊ทœ์น™์„ ์•Œ์•„๋ณด๊ฒ ๋‹ค.

๋ธŒ๋žœ์น˜๋ฅผ ํ•„์š”์—†์–ด์กŒ์„ ๋•Œ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

git branch -d [BRANCH_NAME]
git branch --delete [BRANCH_NAME]

ํ•˜์ง€๋งŒ ์ด ๊ฒƒ์œผ๋กœ ๋ชจ๋“  ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋ฐ”๋กœ ๋จธ์ง€ ๋˜์ง€ ์•Š์€ ๋ธŒ๋žœ์น˜๊ฐ€ ๊ทธ๋ ‡๋‹ค merge ํ•ฉ์น˜๋Š” ๊ฒƒ์ธ๋ฐ ์ด ๋˜ํ•œ ๋’ค์—์„œ ์„ค๋ช…ํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ƒฅ ๋‹จ์ง€ ๋จธ์ง€ ๋˜์ง€ ์•Š์€ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•œ๋‹ค๊ณ ๋งŒ ์•Œ๋ฉด ๋œ๋‹ค.

git branch -D [๋ธŒ๋žœ์น˜์ด๋ฆ„]
git branch --delete --force [๋ธŒ๋žœ์น˜์ด๋ฆ„]

merge

์—ฌ๋Ÿฌ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋ฉด ๊ฐ ๋ธŒ๋žœ์น˜๋งˆ๋‹ค ๋‚ด์šฉ์ด ๋‹ฌ๋ผ์ง„๋‹ค. ์ด๋•Œ ๊ฐ ๋ธŒ๋žœ์น˜๋งˆ๋‹ค ๊ฐœ๋ฐœํ•œ ์ฝ”๋“œ๋ฅผ ํ•ฉ์น  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋จธ์ง€์ด๋‹ค.

branch

๋‹ค์Œ๊ณผ ๊ฐ™์ด main ๋ธŒ๋žœ์น˜๊ฐ€ ์žˆ๋‹ค. ๊ฑฐ๊ธฐ์„œ newMain์ด๋ผ๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ํŒŒ์„œ ๊ฐ๊ฐ ๋‘˜๋‹ค ์ปค๋ฐ‹์„ ํ•œ ํ›„ merge๋ฅผ ํ†ตํ•ด ํ•ฉ์นœ ๊ฒƒ์ด ๋ฐ‘์— ๊ทธ๋ฆผ์ด๋‹ค

merge

์•„๋งˆ merge๊ฐ€ ์–ด๋–ค๊ฒƒ์ธ์ง€ ๋А๋‚Œ์ด ๋“ค์—ˆ์„ ๊ฒƒ์ด๋‹ค. ์ด์ œ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

  1. git merge [๋ธŒ๋žœ์น˜์ด๋ฆ„]

ํ˜„ ๋ธŒ๋žœ์น˜์™€ ๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜๊ฐ€ Fast-Forward ๊ด€๊ณ„ O: ๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜(์ปค๋ฐ‹)์„ ๋”ฐ๋ผ๊ฐ. without Merge ์ปค๋ฐ‹
ํ˜„ ๋ธŒ๋žœ์น˜์™€ ๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜๊ฐ€ Fast-Forward ๊ด€๊ณ„ X : ๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜์™€ ๋ณ‘ํ•ฉ๋จ. with Merge ์ปค๋ฐ‹

  1. git merge --no-ff [๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜ ๋ช…]

ํ˜„์žฌ ๋ธŒ๋žœ์น˜์™€ ๋ณ‘ํ•ฉ ๋Œ€์ƒ์˜ ๊ด€๊ณ„๊ฐ€ Fast-Forward์ด๋˜ ์•„๋‹ˆ๋˜ ๋ฌด์กฐ๊ฑด Merge ์ปค๋ฐ‹๊ณผ ๊ฐ™์ด ๋ณ‘ํ•ฉ๋˜๋Š” ์˜ต์…˜

  1. git merge --ff-only [๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜ ๋ช…]

ํ˜„์žฌ ๋ธŒ๋žœ์น˜์™€ ๋ณ‘ํ•ฉ ๋Œ€์ƒ์˜ ๊ด€๊ณ„๊ฐ€ Fast-Forward์ธ ๊ฒฝ์šฐ์—๋งŒ ๋ณ‘ํ•ฉ ์ง„ํ–‰. Merge ์ปค๋ฐ‹ ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ

  1. git merge --squash [๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜ ๋ช…]

ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ ๋Œ€์ƒ๊ณผ์˜ ์ฐจ์ด๋‚˜๋Š” commit์„ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์„œ ์ปค๋ฐ‹ํ•จ

์—ฌ๊ธฐ์„œ ๋‚˜์˜ค๋Š” fast forward ๊ด€๊ณ„๋ฅผ ๋ชจ๋ฅธ๋‹ค๋ฉด https://otzslayer.github.io/git/2021/12/05/git-merge-fast-forward.html ์ด ๊ธ€์„ ์ฝ์œผ๋ฉด ๋ ๊ฒƒ์ด๋‹ค

rebase

rebase๋Š” merge์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ณ‘ํ•ฉํ•˜๋Š” ์šฉ๋„์ด๋‹ค. ์šฉ๋„๋Š” ๊ฐ™์ง€๋งŒ ์ฐจ์ด์ ์ด ๋ถ„๋ช…ํžˆ ์กด์žฌํ•œ๋‹ค.

๋‘ ๊ฐœ๋ฅผ ๊ฐ„๋‹จํžˆ ๋งํ•˜์ž๋ฉด
Merge๋Š” ์‰ฝ๊ณ  ์•ˆ์ „ํ•˜์ง€๋งŒ ์ปค๋ฐ‹ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ์ง€์ €๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค ๋ฐ˜๋ฉด Rebase๋Š” ์ž˜ ๋ชจ๋ฅด๊ณ  ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์–ด ๊นŒ๋‹ค๋กญ์ง€๋งŒ ์ปค๋ฐ‹ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

merge๋กœ๋งŒ ํ•ฉ์ณค์„ ๋•Œ ์ง€์ €๋ถ„ํ•ด์ง€๋Š” ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ๋‹ค.

sdf