Dev_TIMI

์Šค๋‚ต ๊นƒ ๐Ÿช - ์ค‘๊ธ‰ํŽธ #1: ๋ชจ๋“  ๋ธŒ๋žœ์น˜ ์—…๋ฐ์ดํŠธ์™€ ํ’€(Pull) ํ•˜๊ธฐ

by its_TIMI

Git์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋ธŒ๋žœ์น˜๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•œ๋‹ค.


๐ŸŒŸ ๊ธฐ๋ณธ ๋ช…๋ น์–ด

ํ˜„์žฌ ์ž‘์—… ์ค‘์ธ ๋ธŒ๋žœ์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค:

git pull --rebase

--rebase ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๊นƒ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ๋” ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌ๋˜๋ฉฐ, ๋ณ‘ํ•ฉ(commit merge) ์—†์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


๐ŸŒŸ ๋ชจ๋“  ๋ธŒ๋žœ์น˜ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ

Git์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ธŒ๋žœ์น˜๋งŒ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๋ธŒ๋žœ์น˜๋ฅผ ํ•œ ๋ฒˆ์— ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์•„๋ž˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค:

for branch in $(git branch -r | grep -v '\->'); do
  git checkout ${branch##*/} && git pull --rebase;
done

์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ์›๊ฒฉ ๋ธŒ๋žœ์น˜๋ฅผ ํ•˜๋‚˜์”ฉ ์ฒดํฌ์•„์›ƒํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค.


๐ŸŒŸ ์ž‘์—… ํ™˜๊ฒฝ์„ ํšจ์œจ์ ์œผ๋กœ ์„ค์ •ํ•˜๊ธฐ

git pull ์ž‘์—…์„ ๋”์šฑ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์•„๋ž˜ ์„ค์ •์„ ์ถ”๊ฐ€ํ•œ๋‹ค:

git config --global pull.rebase true
git config --global rebase.autoStash true

์ด ์„ค์ •์€ git pull ์‹œ ์ž๋™์œผ๋กœ rebase๋ฅผ ์ ์šฉํ•˜๋ฉฐ, ์ž‘์—… ์ค‘์ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž„์‹œ ์ €์žฅ(stash) ํ›„ ๋‹ค์‹œ ์ ์šฉํ•œ๋‹ค.


๐ŸŒŸ ์ถ”๊ฐ€ ํŒ

ํ’€(Pull) ๊ณผ์ •์—์„œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ๋•Œ, ๋ฌธ์ œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ์„ค์ •๋„ ์ถ”์ฒœํ•œ๋‹ค:

git config --global merge.conflictstyle diff3

์ด ์„ค์ •์„ ํ†ตํ•ด ์ถฉ๋Œ ์‹œ ๋” ๋ช…ํ™•ํ•œ ๋น„๊ต ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


Git ์‚ฌ์šฉ์— ์žˆ์–ด ์ด ํŒ์ด ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž€๋‹ค.

๋ฐ˜์‘ํ˜•

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Dev_TIMI

its_TIMI

ํ™œ๋™ํ•˜๊ธฐ