[Git] worktree

[์›๋ณธ ๋งํฌ]

worktree๋Š” git์˜ ์œ ์šฉํ•œ ๋ถ€๊ฐ€๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋‹ค.
์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž‘์—… ์ƒํƒœ๋ฅผ ๋™์‹œ์— ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

๋งˆ๋ฒ•์ฒ˜๋Ÿผ ์—ฎ์–ด์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๊ทธ๋Ÿฐ๊ฑด ์•„๋‹ˆ๊ณ , ๊ธฐ์‹ค ๋™์ž‘ ์›๋ฆฌ ์ž์ฒด๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ cloneํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋‹ค๋‹ค.
๋งค๋ฒˆ cloneํ•˜๊ฑฐ๋‚˜ ๋ณต๋ถ™ํ•ด์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ํŽธํ•˜๋‹ค.

git worktree์˜ ์„œ๋ธŒ์ปค๋งจ๋“œ๋“ค์„ ํ†ตํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.




worktree ์ถ”๊ฐ€

worktree add ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด tree๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
tree๊ฐ€ ์ƒ์„ฑ๋  ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค. ๋ณดํ†ต์€ ๋ถ€๋ชจ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์„œ (../tree๋ช…)์˜ ํ˜•ํƒœ๋กœ ๋ณด๋‚ธ๋‹ค.

git worktree add ../treename # ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ์ƒ์„ฑ
git worktree add ../treename ๋ธŒ๋žœ์น˜ # ํŠน์ • ๋ธŒ๋žœ์น˜๋กœ ์ƒ์„ฑ

๊ทธ๋ฆฌ๊ณ  tree๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด

์‹ค์ œ๋กœ ๋ถ€๋ชจ ๋””๋ ‰ํ„ฐ๋ฆฌ์—, tree์˜ ์ด๋ฆ„์œผ๋กœ ํ”„๋กœ์ ํŠธ์˜ clone์ด ์ƒ์„ฑ๋œ๋‹ค. ๊ฑฐ์˜ ๋™์ผํ•œ ๋ณต์ œ๋‹ค.




worktree ๋‹ค๋ฃจ๊ธฐ

๊ทธ๋ฆฌ๊ณ  worktree list ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด, ์ „์ฒด tree ๋ชฉ๋ก์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

worktree๋Š” branch์ฒ˜๋Ÿผ ์ฝ”๋“œ ๋ฒ„์ „์„ ์ž๋™์„ ์ „ํ™˜ํ•ด์ฃผ๊ณ  ๊ทธ๋Ÿฐ๊ฑด ์—†๋‹ค.
์ƒˆ๋กœ ๋งŒ๋“  tree์— ๋Œ€ํ•ด์„œ ์ž‘์—…์„ ํ•˜๋ ค๋ฉด, ๋ฐฉ๊ธˆ ๋งŒ๋“  tree ๋””๋ ‰ํ† ๋ฆฌ์— ๋“ค์–ด๊ฐ€์„œ ํ•ด์•ผ ํ•œ๋‹ค.
์ปค๋ฐ‹์ด๋‚˜ ๋ธŒ๋žœ์น˜๋„ ์™„์ „ํžˆ ๋ณ„๋„๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.

tree๋ผ๋Š” ๊ธ€๋กœ๋ฒŒ ์ปจํ…์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ตœ์†Œํ•œ์˜ ์ •๋ณด๋งŒ ๊ณต์œ ํ•  ๋ฟ์ด๋‹ค.




Worktree ์ œ๊ฑฐ

์ž‘์—…์„ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด tree๋ฅผ ์ •๋ฆฌํ•˜๊ธฐ๋„ ํ•ด์•ผํ•œ๋‹ค.
remove ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด worktree๋ฅผ ์‹ค์ œ ๋””๋ ‰ํ† ๋ฆฌ์™€ ํ•จ๊ป˜ ์ง€์›Œ์ค€๋‹ค.

worktree์˜ ์ƒํƒœ๊ฐ€ ๊นจ๋—ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์ง€์›Œ์ง€์ง€ ์•Š๊ธฐ๋„ ํ•œ๋‹ค. ๊ทธ๋Ÿด๋•Œ๋Š” --force ์˜ต์…˜์„ ์ฃผ๊ฑฐ๋‚˜ ์ง์ ‘ ์ง€์›Œ์ค˜๋„ ๋œ๋‹ค.




์ฐธ์กฐ
https://git-scm.com/docs/git-worktree