Merge Commit

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

-   ๋ฉ”์ธ ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹ ๊ธฐ๋ก์„ ๋ณด๋ฉด, A์™€ B ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹ ๊ธฐ๋ก์ด ์‹œ๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด๊ฐ”์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Squash and Merge

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปค๋ฐ‹์„ ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์œผ๋กœ ํ•ฉ์นœ ํ›„ ๋ณ‘ํ•ฉํ•œ๋‹ค.
  • git merge --squash ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ณ‘ํ•ฉ์„ ์ง„ํ–‰ํ•œ๋‹ค.
  • ์žฅ์ 
    • ๋ณ‘ํ•ฉํ•œ ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹์ด ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ง€๊ธฐ ๋•Œ๋ฌธ์—, ํžˆ์Šคํ† ๋ฆฌ ํ˜น์€ ๊ทธ๋ž˜ํ”„์˜ ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง„๋‹ค.
  • ๋‹จ์ 
    • ์ปค๋ฐ‹์ด ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ง€๊ธฐ ๋•Œ๋ฌธ์—, ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ๋“ค์— ๋Œ€ํ•ด ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์•Œ๊ธฐ ์–ด๋ ต๋‹ค.
    • ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์— ๋ณ„๋„๋กœ ๋‚จ๊ธฐ์ง€ ์•Š๋Š” ์ด์ƒ, ์–ด๋–ค ๋ธŒ๋žœ์น˜์—์„œ ๋ณ‘ํ•ฉ์ด ๋๋Š”์ง€ ์•Œ๊ธฐ ์–ด๋ ต๋‹ค.

  • ๋ธŒ๋žœ์น˜ ์‚ญ์ œ ์˜ค๋ฅ˜
    • Squash and Merge๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ• ๋ ค๊ณ  ํ•˜๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์™”๋‹ค.
    • ๋ฉ”์‹œ์ง€์˜ ๋‚ด์šฉ์€ A ๋ธŒ๋žœ์น˜๊ฐ€ ์™„์ „ํžˆ ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์•˜๋‹ค์ด๋‹ค.
    • git graph๋ฅผ ๋ณด๋ฉด, A ๋ธŒ๋žœ์น˜์™€ B ๋ธŒ๋žœ์น˜๊ฐ€ main ๋ธŒ๋žœ์น˜์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๊ณ , ๋…๋ฆฝ์ ์ธ ์ƒํƒœ์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Squash and Merge์—์„œ๋งŒ ๋ฐœ์ƒํ•œ ๊ฑด์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Commit merge๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•ด๋ดค๋‹ค.

-   ์ •์ƒ์ ์œผ๋กœ ๋ธŒ๋žœ์น˜๊ฐ€ ์‚ญ์ œ๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
-   Squash and Merge ์ดํ›„ ๋ณ‘ํ•ฉ์—†์ด ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, `git branch -D ๋ธŒ๋žœ์น˜๋ช…` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

Rebase and Merge

  • Rebase : ๋ธŒ๋žœ์น˜์˜ base(๊ณตํ†ต ์กฐ์ƒ, ๊ธฐ๋ฐ˜)๋ฅผ ์˜ฎ๊ธด๋‹ค
  • ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณ‘ํ•ฉ๋˜๋Š” ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹์„ ๋’ค์— ๋ถ™์ธ๋‹ค.
    • git checkout โ€œ๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜ ์ด๋ฆ„โ€
    • git rebase main
      • ๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹๋“ค์ด main ๋ธŒ๋žœ์น˜์—์„œ ์‹œ์ž‘๋œ ๊ฒƒ ์ฒ˜๋Ÿผ ์ •๋ ฌ๋œ๋‹ค.

    -   ๋‹จ, main ๋ธŒ๋žœ์น˜์˜ ๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด ์•„์ง C ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹์ด ์—†๋‹ค.

-   git checkout main
-   git merge โ€œ๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜ ์ด๋ฆ„โ€
    -   ์ •์ƒ์ ์œผ๋กœ C ๋ธŒ๋žœ์น˜๊ฐ€ main ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

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