Git 2.35 ์†Œ์Šค ์ œ์–ด ์‹œ์Šคํ…œ ์ถœ์‹œ

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

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

  • SSH ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Git ๊ฐ์ฒด์— ๋””์ง€ํ„ธ ์„œ๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํ‚ค์˜ ์œ ํšจ ๊ธฐ๊ฐ„์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด OpenSSH ์ง€์‹œ๋ฌธ "valid-before" ๋ฐ "valid-after"์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช…์ด ํ‚ค๋ฅผ ๊ต์ฒดํ•œ ํ›„ ์„œ๋ช…์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ์ž‘์—…์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ๊ธฐ์กด ํ‚ค์™€ ์ƒˆ ํ‚ค์˜ ์„œ๋ช…์„ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ํ‚ค๋ฅผ ์‚ญ์ œํ•˜๋ฉด ํ•ด๋‹น ํ‚ค๋กœ ์ž‘์„ฑ๋œ ์„œ๋ช…์„ ํ™•์ธํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ๊ทธ๋Œ€๋กœ ๋‘๋ฉด ๊ณ„์†ํ•ด์„œ ์„œ๋ช…์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ๋‹ค๋ฅธ ํ‚ค๋กœ ๋Œ€์ฒด๋œ ์ด์ „ ํ‚ค๋กœ ์ƒˆ ์„œ๋ช…์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์œ ํšจ ์ด์ „ ๋ฐ ์œ ํšจ ์ดํ›„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ช…์ด ์ƒ์„ฑ๋œ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ํ‚ค์˜ ๋ฒ”์œ„๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณ‘ํ•ฉ ์ค‘ ์ถฉ๋Œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” merge.con conflictStyle ์„ค์ •์—์„œ ์ถฉ๋Œ์˜ ์‹œ์ž‘ ๋˜๋Š” ๋์—์„œ ์ง€์ •๋œ ๋ชจ๋“  ํ‘œ์ค€ ์ค„์„ ์ถฉ๋Œ ์™ธ๋ถ€๋กœ ์ด๋™ํ•˜๋Š” "zdiff3" ๋ชจ๋“œ์— ๋Œ€ํ•œ ์ง€์›์ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ •๋ณด๋ฅผ ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค.
  • "--staged" ๋ชจ๋“œ๊ฐ€ "git stash" ๋ช…๋ น์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ธ๋ฑ์Šค์— ์ถ”๊ฐ€๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋งŒ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋จผ์ € ๋ณต์žกํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘ ์ผ๋ถ€๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์—ฐ๊ธฐํ•ด์•ผ โ€‹โ€‹ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์ด๋ฏธ ์ค€๋น„๋œ ๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ž ์‹œ ํ›„์— ๋‚˜๋จธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜์„ธ์š”. ์ด ๋ชจ๋“œ๋Š” "git commit" ๋ช…๋ น๊ณผ ์œ ์‚ฌํ•˜๋ฉฐ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋งŒ ๊ธฐ๋กํ•˜์ง€๋งŒ "git stash โ€”staged"์—์„œ ์ƒˆ ์ปค๋ฐ‹์„ ์ƒ์„ฑํ•˜๋Š” ๋Œ€์‹  ๊ฒฐ๊ณผ๊ฐ€ ์ˆจ๊น€ ์ž„์‹œ ์˜์—ญ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ•„์š”ํ•˜๋ฉด "git stash pop" ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • "git log" ๋ช…๋ น์— "--format=%(describe)"๋ผ๋Š” ์ƒˆ๋กœ์šด ํ˜•์‹ ์ง€์ •์ž๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด "git log"์˜ ์ถœ๋ ฅ๊ณผ "git explain" ๋ช…๋ น์˜ ์ถœ๋ ฅ์„ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "git explain"์— ๋Œ€ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ง€์ •์ž("-format=%(describe:match= ,์ œ์™ธ= )"), ์—ฌ๊ธฐ์—๋Š” ๋‹จ์ถ• ํƒœ๊ทธ("-format=%(describe:tags=)๋ฅผ ํฌํ•จํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. )") ๊ฐœ์ฒด๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ 8์ง„์ˆ˜ ๋ฌธ์ž ์ˆ˜(โ€œโ€”format=%(describe:abbrev= )"). ์˜ˆ๋ฅผ ๋“ค์–ด, ํƒœ๊ทธ์— ๋ฆด๋ฆฌ์Šค ํ›„๋ณด ํƒœ๊ทธ๊ฐ€ ์—†๋Š” ๋งˆ์ง€๋ง‰ 8๊ฐœ ์ปค๋ฐ‹์„ ๋‚˜์—ดํ•˜๊ณ  8์ž ์‹๋ณ„์ž๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: $ git log -13 โ€”format='%(describe:exclude=*-rc *,abbrev=2.34.1 )' v646-4-gaf5e569f89bc2.34.1 v644-0330-g239edb24c2.33.1 v641-15-g002812f858f2.34.1 v643-2-g95b94d056b2.34.1ab v642-56-gb 95bd8 bbc7f2.34.1 v203-9-gffb2980902f2.34.1d v640-3- gdf41c212adeb2.34.1 v639-36-g65715b4132aXNUMX
  • user.signingKey ์„ค์ •์€ ์ด์ œ "ssh-" ์œ ํ˜•์œผ๋กœ ์ œํ•œ๋˜์ง€ ์•Š๊ณ  ํ‚ค์— ๋Œ€ํ•œ ์ „์ฒด ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ํ‚ค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ฒด ์œ ํ˜•์€ "key::" ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ECDSA ํ‚ค์˜ ๊ฒฝ์šฐ "key::ecdsa-sha2-nistp256").
  • "-histogram" ๋ชจ๋“œ์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ชฉ๋ก์„ ์ƒ์„ฑํ•˜๋Š” ์†๋„์™€ ์ƒ‰์ƒ ์ฐจ์ด์—์„œ ๊ณต๋ฐฑ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹"-color-moved-ws" ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ ์†๋„๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณ‘ํ•ฉ ์ถฉ๋Œ์„ ๋ถ„์„ํ•˜๊ฑฐ๋‚˜, diff๋ฅผ ๋ณด๊ฑฐ๋‚˜, ๊ฒ€์ƒ‰ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ํŒŒ์ผ์—์„œ ์›ํ•˜๋Š” ์œ„์น˜๋กœ์˜ ์ •ํ™•ํ•œ ์ ํ”„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ Vim์— ์ œ๊ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” "git jump" ๋ช…๋ น์€ ๋‹ค๋ฃจ๋Š” ๋ณ‘ํ•ฉ ์ถฉ๋Œ ๋ฒ”์œ„๋ฅผ ์ขํž ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ž‘์—…์„ "foo" ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ๋งŒ ์ œํ•œํ•˜๋ ค๋ฉด "git jump merge - foo"๋ฅผ ์ง€์ •ํ•˜๊ณ  "Documentation" ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌ์—์„œ ์ œ์™ธํ•˜๋ ค๋ฉด "git jump merge - ':^Documentation'"์„ ์ง€์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์— ๋Œ€ํ•ด "unsigned long" ๋Œ€์‹  "size_t" ์œ ํ˜•์˜ ์‚ฌ์šฉ์„ ํ‘œ์ค€ํ™”ํ•˜๋Š” ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์–ด 4GB๋ณด๋‹ค ํฐ ํŒŒ์ผ์— ๋Œ€ํ•ด "clean" ๋ฐ "smudge" ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. LLP64 ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ํ”Œ๋žซํผ์„ ํฌํ•จํ•œ ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ "unsigned long" ์œ ํ˜•์€ 4๋ฐ”์ดํŠธ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
  • "-empty=(stop|drop|keep)" ์˜ต์…˜์ด "git am" ๋ช…๋ น์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฉ”์ผ๋ฐ•์Šค์—์„œ ํŒจ์น˜๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ๋•Œ ํŒจ์น˜๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์€ ๋นˆ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ๋™์ž‘์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "stop" ๊ฐ’์€ ์ „์ฒด ํŒจ์น˜ ์ž‘์—…์„ ์ข…๋ฃŒํ•˜๊ณ , "drop"์€ ๋นˆ ํŒจ์น˜๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ , "keep"์€ ๋นˆ ์ปค๋ฐ‹์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•˜๊ณ  ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด "git Reset", "git diff", "git Blame", "git fetch", "git pull" ๋ฐ "git ls-files" ๋ช…๋ น์— ๋ถ€๋ถ„ ์ธ๋ฑ์Šค(ํฌ์†Œ ์ธ๋ฑ์Šค)์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถ€๋ถ„ ๋ณต์ œ ์ž‘์—…(์ŠคํŒŒ์Šค ์ฒดํฌ์•„์›ƒ)์ด ์ˆ˜ํ–‰๋˜๋Š” ์ €์žฅ์†Œ.
  • "git sparse-checkout init" ๋ช…๋ น์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ "git sparse-checkout set"์œผ๋กœ ๋Œ€์ฒด๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ €์žฅ์†Œ์— ๋ธŒ๋žœ์น˜ ๋ฐ ํƒœ๊ทธ์™€ ๊ฐ™์€ ์ฐธ์กฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด "reftable" ๋ฐฑ์—”๋“œ์˜ ์ดˆ๊ธฐ ๊ตฌํ˜„์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฐฑ์—”๋“œ๋Š” JGit ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๋งค์šฐ ๋งŽ์€ ์ˆ˜์˜ ์ฐธ์กฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ๋Š” ์•„์ง refs ์‹œ์Šคํ…œ๊ณผ ํ†ตํ•ฉ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • "git grep" ๋ช…๋ น์˜ ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ๊ฐ€ GNU grep ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ์ผ์น˜ํ•˜๋„๋ก ์กฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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