๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Etc

[ Dev Tools ] ๊ฐœ๋ฐœ ํˆด ์ถ”์ฒœ. Lazy Git

 

์˜ค๋Š˜์€ ํšŒ์‚ฌ ๋™๋ฃŒ๋ถ„์ด ์ถ”์ฒœํ•ด ์ค€ ๊ฐœ๋ฐœ ํˆด, Lazy Git์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

 

 

 

Lazygit์€ ์ด๋ฆ„์ฒ˜๋Ÿผ, git์„ ๋”์šฑ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค. CLI๋ฅผ ์ด์šฉํ•˜์—ฌ git์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์กŒ๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

 

Stage Individual Lines ( ์Šคํ…Œ์ด์ง€ ๊ฐœ๋ณ„ ์„ ํƒ ๊ธฐ๋Šฅ )

์ŠคํŽ˜์ด์Šค๋ฅผ ๋ˆŒ๋Ÿฌ ์„ ํƒํ•œ ๋ผ์ธ์„ ์Šคํ…Œ์ด์ง• ํ•˜๊ฑฐ๋‚˜, v๋ฅผ ๋ˆŒ๋Ÿฌ ๋ผ์ธ ๋ฒ”์œ„ ์„ ํƒ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ a๋ฅผ ๋ˆŒ๋Ÿฌ ํ˜„์žฌ hank ์ „์ฒด ์„ ํƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

Interactive Rebase ( ์–‘๋ฐฉํ–ฅ ๋ฆฌ๋ฒ ์ด์Šค )

i๋ฅผ ๋ˆ„๋ฅด๋ฉด ์–‘๋ฐฉํ–ฅ์˜ ๋ฆฌ๋ฒ ์ด์Šค๊ฐ€ ์‹œ์ž‘๋œ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์Šค์ฟผ์‹œ(s), fixup(f), drop(d), edit(e), move up(ctrl+i) ๋˜๋Š” move down(ctrl+j) TODO ์ปค๋ฐ‹์„ ์ˆ˜ํ–‰ํ•œ ํ›„, m๊ณผ ํ•จ๊ป˜ ๋ฆฌ๋ฒ ์ด์Šค ์˜ต์…˜ ๋ฉ”๋‰ด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ , continue๋ฅผ ์„ ํƒํ•˜์—ฌ ๋ฆฌ๋ฒ ์ด์Šค๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•œ๋‹ค.

 

 

Cherry-pick 

commit์—์„œ shift+c๋ฅผ ๋ˆŒ๋Ÿฌ ๋ณต์‚ฌํ•˜๊ณ , shift+v๋ฅผ ๋ˆŒ๋Ÿฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ถ™์—ฌ๋„ฃ๊ธฐ(cherry-pick) ํ•œ๋‹ค.

 

 

Bisect 

b๋ฅผ ๋ˆŒ๋Ÿฌ, ์ปค๋ฐ‹ ๋ณด๊ธฐ์—์„œ ๋ฐ”์ด์„นํŠธ (์–‘ํ˜ธ / ๋ถˆ๋Ÿ‰)์œผ๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

Nuke the working tree 

git status (๊ทธ๋ฆฌ๊ณ  ๋”ํ‹ฐ ์„œ๋ธŒ๋ชจ๋“ˆ์„ ํฌํ•จํ•˜๋Š” yes) kidpix style์„ ์‹คํ–‰ํ•  ๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์„ ๋•Œ shift+d๋ฅผ ๋ˆŒ๋Ÿฌ ๋ฆฌ์…‹ ์˜ต์…˜ ๋ฉ”๋‰ด๋ฅผ ํ‘œ์‹œํ•œ ๋‹ค์Œ 'nuke' ์˜ต์…˜์„ ์„ ํƒํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

Amend an old commit ( ์ด์ „ ์ปค๋ฐ‹ ์ˆ˜์ • )

์ž„์˜์˜ ์ปค๋ฐ‹์—์„œ shift + a ๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ˜„์žฌ ๋‹จ๊ณ„๊ฐ€ ๋ณ€๊ฒฝ๋œ ์ปค๋ฐ‹์ด ์ˆ˜์ •๋œ๋‹ค. (๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ interactive rebase ์‹คํ–‰)

 

 

 

Filter

'/'๋กœ ๋ทฐ๋ฅผ ํ•„ํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

Invoke a custom command ( ์‚ฌ์šฉ์ž ์ง€์ • ๋ช…๋ น ํ˜ธ์ถœ )

Lazygit์€ ๋งค์šฐ ์œ ์—ฐํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ๋ช…๋ น ์‹œ์Šคํ…œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” ๋‚ด์žฅ๋œ ์ง€์ ์— ๋Œ€ํ•œ ์ฒดํฌ์•„์›ƒ ์ž‘์—…์„ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋ช…๋ น์„ ์ •์˜ํ•œ๋‹ค.

 

 

 

Worktrees

์ž‘์—… ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ์—ฌ๋Ÿฌ ๋ธŒ๋žœ์น˜ ๊ฐ„์— ์ „ํ™˜ํ•  ๋•Œ WIP ์ปค๋ฐ‹์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•  ํ•„์š” ์—†์ด, ์—ฌ๋Ÿฌ ๋ธŒ๋žœ์น˜๊ฐ€ ํ•œ ๋ฒˆ์— ์ด๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ธŒ๋žœ์น˜ ๋ทฐ์—์„œ w๋ฅผ ๋ˆ„๋ฅด๋ฉด ์„ ํƒํ•œ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—… ํŠธ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜๋œ๋‹ค.

 

 

 

๋“ฑ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค์ด ์กด์žฌํ•œ๋‹ค. ์•„๋ž˜์˜ ์ถœ์ฒ˜์˜ Lazygit ์„ ๋ˆ„๋ฅด๋ฉด, Lazygit github ์—์„œ ๋” ๋งŽ์€ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋” ์ž์„ธํžˆ ๋ฐฐ์šฐ๋ ค๋ฉด ํŠœํ† ๋ฆฌ์–ผ์„ ์ฐธ๊ณ ํ•˜์ž.


๋‚ด๊ฐ€ ์จ๋ณด๊ณ  Lazygit์—์„œ ํŠนํžˆ ์ข‹์•˜๋‹ค๊ณ  ๋Š๊ผˆ๋˜ ๊ธฐ๋Šฅ์€

1. ๋ธŒ๋žœ์น˜ ์ด๋™์—†์ด ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜ pull ๋ฐ›๊ธฐ.

2. ํŽธ๋ฆฌํ•œ rebase & ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ

3. ๊ท€์—ฌ์šด UI

4. ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ์†Œ์ŠคํŠธ๋ฆฌ์— ๋น„ํ•ด ๋น ๋ฅธ ์†๋„.

๋“ฑ์œผ๋กœ, ํšŒ์‚ฌ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ๊ฐœ์ธ PC์—๋„ ์„ค์น˜ํ•˜์—ฌ ์—ด์‹ฌํžˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค!!

์ฃผ๋ณ€์— ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์ถ”์ฒœํ•ด์ฃผ๊ณ  ์‹ถ์€ ํˆด์ด๋‹ค! ๐Ÿ‘

 

 

 

 

 

์„ค์น˜ ๋ฐฉ๋ฒ•์€ ์‚ฌ์ดํŠธ์— ์ž์„ธํžˆ ๋‚˜์™€์žˆ์ง€๋งŒ, brew๊ฐ€ ๊น”๋ ค์žˆ๋‹ค๋ฉด brew๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•˜๋ฉด ๋œ๋‹ค.

brew install jesseduffield/lazygit/lazygit

 

 

 

 

 


 

๐ŸŒธ ์ถœ์ฒ˜ ๐ŸŒธ

 

Lazy Git