Skip to content

Jwhyee/git-scripts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

32 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ Node.js Git Workflow Automation Scripts

์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” Git ๋ช…๋ น์–ด(๋ถ„๊ธฐ ์ƒ์„ฑ, ์‚ญ์ œ, ๋ฆฌ๋ฒ ์ด์Šค, ํ‘ธ์‹œ ๋“ฑ)๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•œ Node.js ๊ธฐ๋ฐ˜์˜ ์ปค์Šคํ…€ Git ์Šคํฌ๋ฆฝํŠธ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.

๋ณต์žกํ•œ ๋ธŒ๋žœ์น˜ ์ „๋žต ์†์—์„œ๋„ branches.json์„ ํ†ตํ•ด ๋ธŒ๋žœ์น˜ ๊ฐ„์˜ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ฅผ ์ถ”์ ํ•˜๊ณ , ์•ˆ์ „ํ•œ Rebase์™€ ๋ชจ๋“ˆ ์ผ๊ด„ ์ดˆ๊ธฐํ™” ๋“ฑ์˜ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ Quick Start

์šด์˜์ฒด์ œ ํ™˜๊ฒฝ์— ๋งž๋Š” ํƒญ์„ ํ™•์ธํ•˜์—ฌ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”.

๐ŸŽ macOS / Linux ํ™˜๊ฒฝ

macOS์™€ Linux๋Š” ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์— ์ง์ ‘ ์‹คํ–‰ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์—ฌ ์‰˜ ํ™˜๊ฒฝ๊ณผ ๋งค๋„๋Ÿฝ๊ฒŒ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. ์ €์žฅ์†Œ ํด๋ก  ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ

cd ~
git clone [https://github.com/Jwhyee/git-scripts.git](https://github.com/Jwhyee/git-scripts.git)
chmod +x ~/git-scripts/*.js

2. .gitconfig alias ๋“ฑ๋ก

git config --global --edit

์•„๋ž˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

[alias]
    r = "!~/git-scripts/rebase.js"
    s = "!~/git-scripts/switch.js"
    p = "!~/git-scripts/push.js"
    rp = "!~/git-scripts/rp.js"
    b = "!~/git-scripts/branch.js"
    clear = "!~/git-scripts/clear.js"

๐ŸชŸ Windows ํ™˜๊ฒฝ

Windows์˜ CMD๋‚˜ PowerShell์€ ํŒŒ์ผ ์ตœ์ƒ๋‹จ์˜ Shebang(#!/usr/bin/env node)์„ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Git Alias ์„ค์ • ์‹œ node ๋ช…๋ น์–ด๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

1. ์ €์žฅ์†Œ ํด๋ก  (Git Bash ๋˜๋Š” PowerShell ์‚ฌ์šฉ)

cd ~
git clone [https://github.com/Jwhyee/git-scripts.git](https://github.com/Jwhyee/git-scripts.git)

2. .gitconfig ์—์ผ๋ฆฌ์–ด์Šค ๋“ฑ๋ก

git config --global --edit

์•„๋ž˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. (๊ฒฝ๋กœ ํ™•์ธ ํ•„์ˆ˜)

[alias]
    r = "!node ~/git-scripts/rebase.js"
    s = "!node ~/git-scripts/switch.js"
    p = "!node ~/git-scripts/push.js"
    rp = "!node ~/git-scripts/rp.js"
    b = "!node ~/git-scripts/branch.js"
    clear = "!node ~/git-scripts/clear.js"

๐Ÿ“š ๋ช…๋ น์–ด ์š”์•ฝ (Command Reference)

๋ช…๋ น์–ด ์˜ต์…˜/์ธ์ž ์„ค๋ช…
git b --list ๋กœ์ปฌ ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
-d <keyword> ํ‚ค์›Œ๋“œ๊ฐ€ ํฌํ•จ๋œ ๋กœ์ปฌ ๋ธŒ๋žœ์น˜์™€ ๊ธฐ๋ก์„ ์ผ๊ด„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
git s <branch> ํ•ด๋‹น ๋กœ์ปฌ ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜(Checkout)ํ•ฉ๋‹ˆ๋‹ค.
-c <branch> ํ˜„์žฌ ๋ธŒ๋žœ์น˜๋ฅผ ๋ถ€๋ชจ๋กœ ์‚ผ์•„ ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
git r this ํ˜„์žฌ ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ Fetch & Rebase๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
parent git s -c๋กœ ๊ธฐ๋ก๋œ ๋ถ€๋ชจ ๋ธŒ๋žœ์น˜ ๊ธฐ์ค€์œผ๋กœ Rebase๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
all ํ˜„์žฌ ๋ฐ ํ•˜์œ„ Git ์ €์žฅ์†Œ ์ „์ฒด๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ Rebase๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
git p this ํ˜„์žฌ ๋ธŒ๋žœ์น˜๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ(Origin)์— Push ํ•ฉ๋‹ˆ๋‹ค.
this -f ์›๊ฒฉ ์ €์žฅ์†Œ์— Force Push๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
git rp this [-f] ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ๊ธฐ์ค€์œผ๋กœ Rebase ์™„๋ฃŒ ํ›„ ์ฆ‰์‹œ Push๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
git clear (์—†์Œ) ํ”„๋กœ์ ํŠธ ๋‚ด ๋ชจ๋“  Git ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ Hard Reset ๋ฐ Clean ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“– ์ƒ์„ธ ์‚ฌ์šฉ๋ฒ• (Detailed Usage)

1๏ธโƒฃ git b : ๋ธŒ๋žœ์น˜ ์ผ๊ด„ ์ •๋ฆฌ

์ •๊ทœ์‹์ด๋‚˜ ๋ณต์žกํ•œ ์‰˜ ๋ช…๋ น์–ด ์—†์ด, ํŠน์ • ํ‚ค์›Œ๋“œ๊ฐ€ ํฌํ•จ๋œ ๋ธŒ๋žœ์น˜๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ฐพ์•„ ์ง€์›๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ ์˜ˆ์‹œ: git b -d feat
  • ๋™์ž‘: ์ด๋ฆ„์— feat๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“  ๋ธŒ๋žœ์น˜๋ฅผ ์ฐพ์•„ ์‚ญ์ œํ•˜๊ณ , ๋‚ด๋ถ€ ์ถ”์  ํŒŒ์ผ(branches.json)์—์„œ๋„ ํ•ด๋‹น ๋‚ด์—ญ์„ ๊น”๋”ํ•˜๊ฒŒ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ git s : ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ๊ณผ ๊ด€๊ณ„ ์ถ”์ 

๋‹จ์ˆœํ•œ ๋ธŒ๋žœ์น˜ ์ „ํ™˜์„ ๋„˜์–ด, ์ƒˆ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ์‹œ ํŒŒ์ƒ๋œ ์ถœ์ฒ˜(Parent)๋ฅผ ์ž๋™์œผ๋กœ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ ์˜ˆ์‹œ: git s -c feature-login
  • ๋™์ž‘: ํ˜„์žฌ ์œ„์น˜ํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ feature-login์„ ๋งŒ๋“ค๊ณ , ์ด ๋‘˜์˜ ๊ด€๊ณ„๋ฅผ branches.json์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ git r parent ๋ช…๋ น์–ด์˜ ํ•ต์‹ฌ ์ปจํ…์ŠคํŠธ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ git r : ์ง€๋Šฅํ˜• ๋ฆฌ๋ฒ ์ด์Šค

๋‹จ์ˆœํ•œ pull์ด๋‚˜ rebase ๋ช…๋ น์–ด์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•ฉ๋‹ˆ๋‹ค.

  • git r parent: ๋ธŒ๋žœ์น˜๊ฐ€ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๋ป—์–ด ๋‚˜๊ฐ„ ์ƒํ™ฉ(์˜ˆ: main -> dev -> feature-A -> feature-B)์—์„œ๋„, ์ƒ์œ„ ๋ธŒ๋žœ์น˜๊ฐ€ ์•„๋‹Œ ์ž์‹ ์ด ํŒŒ์ƒ๋œ ์ •ํ™•ํ•œ ์ง๊ณ„ ๋ถ€๋ชจ ๋ธŒ๋žœ์น˜๋ฅผ ์ฐพ์•„ ์ตœ์‹ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • git r all: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค(MSA) ํ˜•ํƒœ๋‚˜ ์„œ๋ธŒ๋ชจ๋“ˆ ๋“ฑ ์—ฌ๋Ÿฌ .git ํด๋”๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ตฌ์กฐ์—์„œ ๋ชจ๋“  ์ €์žฅ์†Œ๋ฅผ ํ•œ ๋ฒˆ์— ์ตœ์‹  ์ƒํƒœ๋กœ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

4๏ธโƒฃ git rp : Rebase & Push ์›Œํฌํ”Œ๋กœ์šฐ

์ž‘์—…ํ•œ ๋‚ด์—ญ์„ ์ตœ์‹ ํ™”ํ•˜๊ณ  ๋ฆฌ๋ชจํŠธ์— ๋ฐ˜์˜ํ•˜๋Š” ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•œ ๊ณผ์ •์„ ๋‹จ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

  • ์•ˆ์ „์žฅ์น˜: Rebase ๊ณผ์ •์—์„œ ์ถฉ๋Œ(Conflict)์ด ๋ฐœ์ƒํ•˜๋ฉด ์ฆ‰์‹œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จํ•˜์—ฌ ์ž˜๋ชป๋œ ์ฝ”๋“œ๊ฐ€ Push๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ๊ถŒ์žฅ ์›Œํฌํ”Œ๋กœ์šฐ (Best Practice)

์ด ์Šคํฌ๋ฆฝํŠธ ๋ชจ์Œ์„ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋น ๋ฅด๊ณ  ์•ˆ์ „ํ•œ ๊ฐœ๋ฐœ ์‚ฌ์ดํด์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ž‘์—… ์‹œ์ž‘: ๋ถ€๋ชจ ๋ธŒ๋žœ์น˜์—์„œ ์ƒˆ๋กœ์šด ์ž‘์—… ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
git s -c feature-new-ui
  1. ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐ ์ปค๋ฐ‹: (์ฝ”๋“œ ์ˆ˜์ • ํ›„ git commit)
  2. ์ตœ์‹ ํ™” ๋ฐ ๋ฐ˜์˜: ๋ถ€๋ชจ ๋ธŒ๋žœ์น˜์˜ ์ตœ์‹  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ›์•„์™€ ๋ฆฌ๋ฒ ์ด์Šคํ•œ ๋’ค ํ‘ธ์‹œ
git r parent
git p this

(๋˜๋Š” ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌ)

git rp this
  1. ์ž‘์—… ์™„๋ฃŒ ํ›„ ์ •๋ฆฌ: ๋ณ‘ํ•ฉ ์™„๋ฃŒ๋œ ๋ธŒ๋žœ์น˜ ์ผ๊ด„ ์‚ญ์ œ
git b -d feature-new-ui

About

git alias scripts

Resources

Stars

Watchers

Forks

Packages

No packages published