[Git] Cherry-Pick

๐Ÿ”ฅLogยท2023๋…„ 7์›” 13์ผ
2

Git

๋ชฉ๋ก ๋ณด๊ธฐ
3/3

โ˜• ์‹œ์ž‘


๊ฐœ์ธ์ ์œผ๋กœ Cherry-Pick์€ Git ๋ช…๋ น์–ด ์ค‘์—์„œ ๊ฐ€์žฅ ํ•œ๋ฒˆ์— ํŒ! ์ดํ•ด๋˜๋Š” ์ด๋ฆ„์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ช…๋ น์–ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

์‹ค์ œ๋กœ๋„ Cherry picking์ด๋ผ๋Š” ๋ง์„ ์›์–ด๋ฏผ๋“ค์€ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•˜๋Š”๋””, ์›ํ•˜๋Š” ๊ฒƒ๋งŒ ์„ ๋ณ„์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

Git์—์„œ๋„ ์ •ํ™•ํžˆ ์ด๋Ÿฐ ๊ธฐ๋Šฅ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๊ฐ€ ๋ฐ”๋กœ Cherry-Pick์ด๋‹ค.

๊ทธ๋Ÿผ ์ž์„ธํžˆ ํ•œ๋ฒˆ ์•Œ์•„๋ณด์ž ๐Ÿ”ฅ


๐Ÿ’ Cherry-Pick


Cherry-Pick?

Cherry-Pick์€ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์— ์žˆ๋Š” Commit๋“ค ์ค‘์—์„œ ์›ํ•˜๋Š” ๊ฒƒ๋งŒ ์™! ๊ฐ€์ ธ์˜ค๋Š” ๋ช…๋ น์–ด์ด๋‹ค. (์ค‘์š”ํ•œ ๊ฒƒ์€ Merging๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ€์žฅ ์ตœ๊ทผ ์ปค๋ฐ‹์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋œ๋‹ค.)

์–ธ์ œ ์“ฐ์ง€?

์–ด๋–ป๊ฒŒ Cherry-Pick์„ ์‚ฌ์šฉํ•˜๋ผ๋Š” ๊ฒƒ์ด ๋”ฑ ์ •ํ•ด์ ธ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ๋‚˜๋Š” ์ฃผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ Cherry-Pick์„ ์‚ฌ์šฉํ•˜๊ณค ํ–ˆ๋‹ค.

  1. ์ž‘์—… ๋ธŒ๋žœ์น˜๋‚˜ ๋ฐฐํฌ ๋ธŒ๋žœ์น˜์— ์•ˆ์ •์„ฑ์ด ๋ณด์žฅ๋˜์ง€ ์•Š์€ ์ปค๋ฐ‹์€ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์ปค๋ฐ‹์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ
  2. Hotfix ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์— ์žˆ๋Š”๋ฐ, ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ๋ฒ„๊ทธ ์ˆ˜์ • ์ปค๋ฐ‹๋งŒ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ์•„๋งˆ ์ฃผ๋กœ ์ด๋Ÿฐ ์šฉ๋„๋กœ ๋งŽ์ด๋“ค ์‚ฌ์šฉํ•  ๊ฒƒ ๊ฐ™๋‹ค.

๋˜, ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ์€ ์•„๋‹ˆ๊ธดํ•˜๋ฏ€๋กœ, Cherry-Pick์€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋งค๋„๋Ÿฌ์šด Git ๋ธŒ๋žœ์น˜ ์ •์ฑ…์„ ์ •ํ•˜๊ณ , ๊ทธ์— ๋งž๊ฒŒ ํ˜‘์—…ํ•˜๋ฉฐ Cherry-Pick์„ ์“ธ ์ƒํ™ฉ์„ ์•ˆ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹๋‹ค ใ…Žใ…Ž


๐Ÿ’๐Ÿ’ Cherry-Pick ์‚ฌ์šฉ๋ฒ•


Git์˜ ์ปค๋ฐ‹์—๋Š” ๊ทธ ์ปค๋ฐ‹๋งŒ ๊ฐ–๋Š” ๊ณ ์œ ํ•œ ID๊ฐ’์ด ์กด์žฌํ•œ๋‹ค.
Cherry-Pick์€ ์ด ๊ณ ์œ ํ•œ ID๊ฐ’์„ ํ™œ์šฉํ•ด์„œ ์ˆ˜ํ–‰๋˜๊ฒŒ ๋œ๋‹ค.

๐Ÿ’พ ๋ช…๋ น์–ด

git cherry-pick {์ปค๋ฐ‹ ID} ... {์ปค๋ฐ‹ ID} 

Cherry-Pick์€ ์œ„์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„์— ์‚ฌ์ง„๋“ค์„ ์˜ˆ์‹œ๋กœ ๋“ค์–ด๋ณด์ž.
master๋ธŒ๋žœ์น˜๋กœ cherry2์˜ 2: Cherry-pick ์ปค๋ฐ‹์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.
๊ทธ๋Ÿฌ๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ ํ•ด๋‹น ์ปค๋ฐ‹์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

git cherry-pick e1ac041b61719f5ac5fdac93b08e72ece0f0513e
# ๋˜๋Š”
git cherry-pick e1ac04

๋ฌผ๋ก  ์ด ๋ช…๋ น์–ด๋Š” ํ˜„์žฌ ๋ธŒ๋žœ์น˜๊ฐ€ master ๋ธŒ๋žœ์น˜์ธ ์ƒํƒœ์—ฌ์•ผํ•œ๋‹ค. ๐Ÿ’ก

๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ ํ›„, master ๋ธŒ๋žœ์น˜์—์„œ ์ปค๋ฐ‹์„ ํ™•์ธํ•ด๋ณด๋ฉด, Cherry-Pick๋œ 2๋ฒˆ ์ปค๋ฐ‹์ด 3๋ฒˆ ์ปค๋ฐ‹๋ณด๋‹ค ๋” ๋จผ์ € ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด์ง€๋งŒ, ๊ฐ€์žฅ ์ตœ๊ทผ ์ปค๋ฐ‹์œผ๋กœ ์ฐํ˜€์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘€ ์™ธ์ „

Cherry-Pick์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๋ธŒ๋žœ์น˜์˜ ์ฝ”๋“œ๋ฅผ ํ•ฉ์น˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.
๊ทธ๋Ÿฌ๋ฏ€๋กœ ์—ญ์‹œ๋‚˜ ์ฝ”๋“œ Conflict๋Š” ์–ผ๋งˆ๋“ ์ง€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๋ธŒ๋žœ์น˜์—์„œ ๋™์ผํ•œ ํŒŒ์ผ์˜ ๋™์ผํ•œ ๋ผ์ธ์„ ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ์ˆ˜์ •ํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ์ถฉ๋Œ์„ ๋‚ผ(?) ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿด ๋•Œ๋Š” Hint์—๋„ ๋‚˜์™€ ์žˆ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ์•„๋ž˜ 3๊ฐ€์ง€ ๋ช…๋ น์–ด๋กœ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • git cherry-pick --continue : ์ถฉ๋Œ๋‚œ ๋ถ€๋ถ„์„ ํ•ด๊ฒฐํ•œ ํ›„, ์‹คํ–‰ํ•˜๋ฉด ์ฒด๋ฆฌํ”ผํ‚น์ด ๋งˆ๋ฌด๋ฆฌ๋œ๋‹ค.
  • git cherry-pick --skip : ์ถฉ๋Œ๋‚œ ์ปค๋ฐ‹์€ ์ œ์™ธํ•˜๊ณ  ์ฒด๋ฆฌํ”ผํ‚นํ•œ๋‹ค.
  • git cherry-pick --abort : Cherry-pick ์‹คํ–‰ํ•˜๊ธฐ ์ „์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.

ํ˜น์‹œ๋‚˜ ์ถฉ๋Œ์ด๋‚˜๋ฉด,,, ์œ„ ๋ช…๋ น์–ด๋ฅผ ์ƒ์šฉํ•ด๋ณด์ž ใ…Žใ…Ž ๐Ÿ™


๐Ÿ™ ์ฐธ๊ณ 


0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด