๋ถ„์‚ฐ ์†Œ์Šค ์ œ์–ด ์‹œ์Šคํ…œ Git 2.23 ์ถœ์‹œ

๋„์ž… ๋ถ„์‚ฐ ์†Œ์Šค ์ œ์–ด ์‹œ์Šคํ…œ ์ถœ์‹œ ํž˜๋‚ด 2.23.0. Git์€ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๊ณ  ์•ˆ์ •์ ์ธ ๊ณ ์„ฑ๋Šฅ ๋ฒ„์ „ ์ œ์–ด ์‹œ์Šคํ…œ ์ค‘ ํ•˜๋‚˜๋กœ ๋ถ„๊ธฐ ๋ฐ ๋ณ‘ํ•ฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์œ ์—ฐํ•œ ๋น„์„ ํ˜• ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ก์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์†Œ๊ธ‰ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์ €ํ•ญ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ์ปค๋ฐ‹์˜ ์ „์ฒด ์ด์ „ ๊ธฐ๋ก์— ๋Œ€ํ•œ ์•”์‹œ์  ํ•ด์‹ฑ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ฐœ๋ฐœ์ž์˜ ๋””์ง€ํ„ธ ์„œ๋ช…์œผ๋กœ ๊ฐœ๋ณ„ ํƒœ๊ทธ์™€ ์ปค๋ฐ‹์„ ์ธ์ฆํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ๋ฒ„์ „์— ๋น„ํ•ด ์ƒˆ ๋ฒ„์ „์—๋Š” 505๊ฐœ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์—ˆ์œผ๋ฉฐ, 77๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฐธ์—ฌํ•˜์—ฌ ์ค€๋น„ํ–ˆ์œผ๋ฉฐ, ์ด ์ค‘ 26๋ช…์ด ์ฒ˜์Œ์œผ๋กœ ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ดˆ์ ์ธ ํ˜์‹ :

  • ๋ธŒ๋žœ์น˜ ์กฐ์ž‘(์ „ํ™˜ ๋ฐ ์ƒ์„ฑ) ๋ฐ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ํŒŒ์ผ ๋ณต์›("git checkout $commit - $filename")๊ณผ ๊ฐ™์ด ๋Š์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ "git checkout" ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ—˜์ ์ธ "git switch" ๋ฐ "git Restore" ๋ช…๋ น์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ์ค€๋น„ ์˜์—ญ์—์„œ ์ฆ‰์‹œ(โ€œโ€”stagingโ€, โ€œgit checkoutโ€๊ณผ ์œ ์‚ฌํ•˜์ง€ ์•Š์Œ). "git checkout"๊ณผ ๋‹ฌ๋ฆฌ "git Restore"๋Š” ๋ณต์› ์ค‘์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์ถ”์ ๋˜์ง€ ์•Š์€ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•œ๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(๊ธฐ๋ณธ์ ์œผ๋กœ "--no-overlay").
  • "-abort"์™€ ์œ ์‚ฌํ•˜๊ฒŒ "git merge โ€“quit" ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘์ง€ํ•˜์ง€๋งŒ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ์ˆ˜๋™ ๋ณ‘ํ•ฉ ์ค‘์— ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ ์ค‘ ์ผ๋ถ€๋ฅผ ๋ณ„๋„์˜ ์ปค๋ฐ‹์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ๊ฒฝ์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • "git clone", "git fetch" ๋ฐ "git push" ๋ช…๋ น์€ ์ด์ œ ์—ฐ๊ฒฐ๋œ ์ €์žฅ์†Œ(๋Œ€์ฒด);
  • ์ถ”๊ฐ€๋จ "gitblame โ€”ignore-rev" ๋ฐ "-ignore-revs-file" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์†Œํ•œ ๋ณ€๊ฒฝ(์˜ˆ: ํ˜•์‹ ์ˆ˜์ •)์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ปค๋ฐ‹์„ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ถฉ๋Œํ•˜๋Š” ์ปค๋ฐ‹์„ ๊ฑด๋„ˆ๋›ฐ๊ธฐ ์œ„ํ•œ "git Cherry-pick โ€”skip" ์˜ต์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค("git Reset && git Cherry-pick โ€”continue" ์‹œํ€€์Šค์˜ ๊ธฐ์–ต๋œ ์•„๋‚ ๋กœ๊ทธ).
  • "git status -[no-]ahead-behind" ์˜ต์…˜์„ ์˜๊ตฌ์ ์œผ๋กœ ์ˆ˜์ •ํ•˜๋Š” status.aheadBehind ์„ค์ •์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค๋ถ€ํ„ฐ "git log"๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ git shortlog๊ฐ€ ์ด๋ฏธ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ mailmap์— ์˜ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.
  • 2.18์— ๋„์ž…๋œ ์ปค๋ฐ‹ ๊ทธ๋ž˜ํ”„(core.commitGraph)์˜ ์‹คํ—˜์  ์บ์‹œ ์—…๋ฐ์ดํŠธ ์ž‘์—…์ด ๋Œ€ํญ ๊ฐ€์†ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์—ฌ๋Ÿฌ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•  ๋•Œ git for-each-ref๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค๊ณ  "git fetch โ€”multiple"์—์„œ auto-gc ํ˜ธ์ถœ ํšŸ์ˆ˜๋ฅผ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
  • "git Branch --list"๋Š” ์ด์ œ ๋กœ์ผ€์ผ์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ๋ชฉ๋ก์˜ ๋งจ ์ฒ˜์Œ์— ๋ถ„๋ฆฌ๋œ HEAD๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€