๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Dev/GIT

๋ธŒ๋žœ์น˜์™€ ๋ณ‘ํ•ฉ

yesolz 2024. 8. 17. 01:53
728x90

 

๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๊ทœ์น™

  • ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ: feature/login, feature/select-product
  • ์ถœ์‹œ ์ค€๋น„: release-1.3, release-1.4
  • ๊ธด๊ธ‰ ์ˆ˜์ •: hotfix-1.2.1

์ปค๋ฐ‹์„ ํ•ด์•ผ ๊ทธ๋•Œ๋ถ€ํ„ฐ ๋ธŒ๋žœ์น˜๋‹ค.
 

๋ณ‘ํ•ฉ

  • ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๊ฑด, ํ˜‘์—…์„ ์œ„ํ•œ ๊ฒƒ
  • ๊ทธ๋ž˜์„œ ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ‘ํ•ฉํ•œ๋‹ค. : ๊นƒํ—ˆ๋ธŒ์—์„œ

 

๋ณ‘ํ•ฉ ๋ฐฉ๋ฒ• : fast-forward์™€ 3ways

fast-forward

A branch์—์„œ B branch๋ฅผ ์ƒ์„ฑํ•œ ์‹œ์ ๋ถ€ํ„ฐ,

  • A branch์—๋Š” ์•„๋ฌด๋Ÿฐ ์ถ”๊ฐ€ ๊ตฌํ˜„์„ ํ•˜์ง€ ์•Š๊ณ 
  • B branch๋งŒ ์ถ”๊ฐ€ ๊ตฌํ˜„ํ•œ ๋’ค
  • B branch์™€ A branch๋ฅผ ํ•ฉ์น˜๋ฉด -> A์— B๊ฐ€ ๋ถ™์œผ๋ฉด ๋๋‚จ.
Before merge:
main:    A---B
              \
feature:       C---D

After fast-forward merge:
main:    A---B---C---D

 

3ways

์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ „๋žต!
A branch์—์„œ B branch๋ฅผ ์ƒ์„ฑํ•œ ์‹œ์ ๋ถ€ํ„ฐ,

  • A branch์—์„œ ์ถ”๊ฐ€ ๊ตฌํ˜„์„ ํ•˜๊ณ 
  • B branch์—์„œ๋„ ์ถ”๊ฐ€ ๊ตฌํ˜„์„ ํ•˜๊ณ 
  • B branch์™€ A branch๋ฅผ ํ•ฉ์น˜๋ฉด -> A branch์™€ B branch๊ฐ€ ์„œ๋กœ ๋น„๊ตํ•˜์—ฌ ๋ฐ”๋€ ๊ฒƒ์„ ์ •๋ฆฌํ•˜์—ฌ ํ•ฉ์น˜๋Š” ์ „๋žต
Before merge:
          A---B---E---F (main)
           \
            C---D (feature)

After 3-way merge:
          A---B---E---F---G (main)
           \         /
            C-------D

 

github์˜ ๋ณ‘ํ•ฉ ๊ด€๋ จ ๊ธฐ๋Šฅ

  • main ๋ธŒ๋žœ์น˜ ๋ณดํ˜ธ
    • ๋ ˆํฌ์ง€ํ† ๋ฆฌ Settings์˜ Branches์—์„œ main branch protect ์ „๋žต ์„ค์ • ๊ฐ€๋Šฅ
  • ์ถ”๊ฐ€ ๋ธŒ๋žœ์น˜ -> main ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ : Pull Request
  • ์ถฉ๋Œ ์ผ์–ด๋‚˜๋Š”์ง€ ํ™•์ธํ•ด์คŒ.
    • PR ๋ฉ”์‹œ์ง€ ์‹ ๊ฒฝ ์“ธ ๊ฒƒ! (++ PR Template ์„ค์ • ๊ฐ€๋Šฅํ•จ !)
  • merge
    • merge commit
  • branch ์‚ญ์ œ
์ฐธ๊ณ  (Creating a pull request template for your repository)
https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository

 

merge๋œ github์™€ ๋กœ์ปฌ git ๋™๊ธฐํ™”

  • git fetch -p : ๊นƒํ—ˆ๋ธŒ ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก ๋™๊ธฐํ™”
  • ๋กœ์ปฌ์—์„œ ๋ณ‘ํ•ฉ๋œ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ
git checkout main          # main ๋ธŒ๋žœ์น˜๋กœ ์ด๋™
git pull origin main       # main ๋ธŒ๋žœ์น˜ ์ตœ์‹  ์ƒํƒœ๋กœ ์—…๋ฐ์ดํŠธ
git branch -d ๋ธŒ๋žœ์น˜๋ช…      # ๋ณ‘ํ•ฉ๋œ ๋ธŒ๋žœ์น˜ ๋กœ์ปฌ์—์„œ ์‚ญ์ œ

 
 

git fetch ๋” ์•Œ์•„๋ณด๊ธฐ

git์—์„œ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ตœ์‹  ์ƒํƒœ๋ฅผ ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.
์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ตœ์‹  ์ปค๋ฐ‹, ์ฐธ์กฐ(๋ธŒ๋žœ์น˜, ํƒœ๊ทธ ๋“ฑ)์„ ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋œ๋‹ค. 
๋‹จ, ๋กœ์ปฌ์˜ ํ˜„์žฌ ์ž‘์—…์ค‘์ธ ๋ธŒ๋žœ์น˜์— ์ง์ ‘์ ์œผ๋กœ ๋ณ‘ํ•ฉํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค.
 

  • -p ๋˜๋Š” --prune: ์›๊ฒฉ์—์„œ ์‚ญ์ œ๋œ ๋ธŒ๋žœ์น˜๋ฅผ ๋กœ์ปฌ์—์„œ๋„ ์ œ๊ฑฐ.
  • --all: ๋ชจ๋“  ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ด.
  • --dry-run: ์‹ค์ œ๋กœ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฏธ๋ฆฌ ๋ณด์—ฌ์คŒ.
  • -q ๋˜๋Š” --quiet: ์ถœ๋ ฅ ๋ฉ”์‹œ์ง€๋ฅผ ์ตœ์†Œํ™”.
  • --no-tags: ํƒœ๊ทธ๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Œ.
  • -t ๋˜๋Š” --tags: ๋ชจ๋“  ํƒœ๊ทธ๋งŒ ๊ฐ€์ ธ์˜ด.
  • -u ๋˜๋Š” --update-head-ok: ํ˜„์žฌ ์ฒดํฌ์•„์›ƒ๋œ ๋ธŒ๋žœ์น˜๋„ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅ.

 
 
 

์š”์•ฝ

  • fast-forward, 3ways ๋ช…์นญ ๋ณต์Šต
  • ์ถ”๊ฐ€์ ์œผ๋กœ pull_request_template์„ ์‹ค์Šตํ•˜๋ฉฐ ์–ด๋–ค ๋‚ด์šฉ์ด PR ๋ฉ”์‹œ์ง€์— ๋“ค์–ด๊ฐ€๋ฉด ์ข‹์„์ง€ ๊ณ ๋ฏผํ•˜์˜€๋‹ค.
  • git fetch ๋ช…๋ น์–ด์˜ ์˜ต์…˜

728x90