Git ์ž์ฃผ ์“ฐ์ด๋Š” ๋ช…๋ น์–ด ๋ชจ์Œ

2023. 7. 28. 22:07ยท ๐Ÿ“š ์—ฐ์žฌ ์‹œ๋ฆฌ์ฆˆ/์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ๋ฉด ์ข‹์„ ๋‚ด์šฉ

1) Git Repository ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐ ์„ค์ • ๋ช…๋ น์–ด

# git init

โ†’ ํ•ด๋‹น ๊ฒฝ๋กœ์— .git ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๋ฉฐ ์ƒˆ๋กœ์šด git ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

# git config --global core.autocrlf true

โ†’ ํ˜‘์—… ์‹œ, ์œˆ๋„์šฐ์™€ ๋งฅ์—์„œ ์—”ํ„ฐ ๋ฐฉ์‹ ์ฐจ์ด๋กœ ์ธํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

# git config --global user.name "(๋ณธ์ธ ์ด๋ฆ„)"
# git config --global user.email "(๋ณธ์ธ ์ด๋ฉ”์ผ)"
# git config --global init.defaultBranch main

โ†’ ๊ธฐ์กด Branch๋Š” Master|Slave ๋ช…์นญ์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋‚˜ ํ•ด๋‹น ์šฉ์–ด๋Š” ์ธ์ข…์ฐจ๋ณ„๋กœ  ์ด์–ด์งˆ ์ˆ˜ ์žˆ์–ด ์š”์ฆ˜์—๋Š” Main์œผ๋กœ ๋ฐ”๊พธ์–ด ์‚ฌ์šฉํ•œ๋‹ค.

2) Git ์ƒํƒœ ํ™•์ธ ๋ช…๋ น์–ด

# git status

โ†’ git ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ™•์ธ (untracked, tracked, staging)

# git log

โ†’ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ์ถœ๋ ฅ

# git log --all --decorate --oneline --graph

โ†’ ์—ฌ๋Ÿฌ ๋ธŒ๋žœ์น˜ ๋‚ด์—ญ ํ•œ๊บผ๋ฒˆ์— ๋ณด๊ธฐ

3) ์ปค๋ฐ‹ ๊ด€๋ จ ๋ช…๋ น์–ด

# git add ํŒŒ์ผ๋ช…

โ†’ ํ•ด๋‹น ํŒŒ์ผ์„ working directory์—์„œ staging area๋กœ ์ด๋™

# git add .

โ†’ ํ˜„์žฌ ๊ฒฝ๋กœ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ working directory์—์„œ staging area๋กœ ์ด๋™

# git restore --staged ํŒŒ์ผ๋ช…

โ†’ Staging Area์˜ ํŠน์ • ํŒŒ์ผ์„ Working Directory๋กœ ์ด๋™ (git add ์ทจ์†Œ)

โ†’ ํŒŒ์ผ๋ช… ๋Œ€์‹  "."์„ ์ ์–ด์„œ ๋ชจ๋“  ํŒŒ์ผ์„ Staing Area์—์„œ Working Directory๋กœ ์ด๋™์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

# git restore ํŒŒ์ผ๋ช…

โ†’ Working Directory์˜ ํŠน์ • ํŒŒ์ผ์„ (๋ณ€๊ฒฝ ๋˜๊ธฐ ์ „์œผ๋กœ) ๋ณต๊ตฌํ•œ๋‹ค.

โ†’ ํŒŒ์ผ๋ช… ๋Œ€์‹ ์— "."์„ ์ ์œผ๋ฉด Working Directory์˜ ๋ชจ๋“  ํŒŒ์ผ์„ (๋ณ€๊ฒฝ ๋˜๊ธฐ ์ „์œผ๋กœ) ๋ณต๊ตฌํ•œ๋‹ค.

โ†’ git reset --hard ๋ช…๋ น์–ด์™€ ๋™์ผํ•˜๋‹ค!

# git commit

โ†’ ํ˜„์žฌ ๋ณ€๊ฒฝ๋‚ด์—ญ ์ปค๋ฐ‹ (Staging Area์— ์žˆ๋Š” ๋ณ€๊ฒฝ๋‚ด์—ญ์„ Repository์— ๋ฐ˜์˜)

# git commit -m "comment"

โ†’ comment + ํ˜„์žฌ ๋ณ€๊ฒฝ๋‚ด์—ญ ์ปค๋ฐ‹ (Staging Area์— ์žˆ๋Š” ๋ณ€๊ฒฝ๋‚ด์—ญ์„ Repository์— ๋ฐ˜์˜)

# git commit -am "comment"

โ†’ git add . + git commit -m "comment" ํ•ฉ์นœ ๋ช…๋ น์–ด

โ†’ ๋‹จ, ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ Untracked ํŒŒ์ผ์ด ์—†์„ ๋•Œ ํ•œ์ •

4) ์ด์ „ ์ปค๋ฐ‹์œผ๋กœ rollbackํ•˜๋Š” ๋ช…๋ น์–ด

[๊ฐ€์ •]
(1) a.txt ์ถ”๊ฐ€
(2) b.txt ์ถ”๊ฐ€
(3) a.txt ์ˆ˜์ •
(4) c.txt ์ถ”๊ฐ€

# git reset --soft ์ปค๋ฐ‹ํ•ด์‹œ

โ†’ Repository์—์„œ Staing Area๋กœ ์ด๋™

โ†’ ์ฆ‰, ํ•ด๋‹น ์ปค๋ฐ‹ํ•ด์‹œ๋กœ ์ด๋™ํ•˜๋˜ ์ด์ „์˜ ๋ณ€๊ฒฝ๋‚ด์—ญ์€ Staing Area์— ๋‚จ์•„์žˆ์Œ

โ†’ (2)๋ฒˆ ์ปค๋ฐ‹๋‚ด์—ญ์œผ๋กœ ์ด๋™ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด (4)๋ฒˆ์˜ ์ปค๋ฐ‹๋‚ด์—ญ์€ ์™„์ „ํžˆ ์‚ญ์ œ๋˜๊ณ  (3)๋ฒˆ์˜ ์ปค๋ฐ‹๋‚ด์—ญ์€ ์ง€์›Œ์ง€์ง€ ์•Š๊ณ  Staing Area์— ๋‚จ์•„์žˆ์Œ

# git reset --mixed ์ปค๋ฐ‹ํ•ด์‹œ (default)

โ†’ Repository์—์„œ Working Directory๋กœ ์ด๋™

โ†’ ์ฆ‰, ํ•ด๋‹น ์ปค๋ฐ‹ํ•ด์‹œ๋กœ ์ด๋™ํ•˜๋˜ ์ด์ „์˜ ๋ณ€๊ฒฝ๋‚ด์—ญ์€ Working Directory์— ๋‚จ์•„์žˆ์Œ

โ†’ (2)๋ฒˆ ์ปค๋ฐ‹๋‚ด์—ญ์œผ๋กœ ์ด๋™ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด (4)๋ฒˆ์˜ ์ปค๋ฐ‹๋‚ด์—ญ์€ ์™„์ „ํžˆ ์‚ญ์ œ๋˜๊ณ  (3)๋ฒˆ์˜ ์ปค๋ฐ‹๋‚ด์—ญ์€ ์ง€์›Œ์ง€์ง€ ์•Š๊ณ  Working Directory์— ๋‚จ์•„์žˆ์Œ

# git reset --hard ์ปค๋ฐ‹ํ•ด์‹œ

โ†’ ์ˆ˜์ •์‚ฌํ•ญ์„ ์™„์ „ํžˆ ์‚ญ์ œํ•จ

โ†’ (2)๋ฒˆ ์ปค๋ฐ‹๋‚ด์—ญ์œผ๋กœ ์ด๋™ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด (3), (4)๋ฒˆ์˜ ์ปค๋ฐ‹๋‚ด์—ญ์€ ์™„์ „ํžˆ ์‚ญ์ œ๋œ๋‹ค.

โ†’ ์ปค๋ฐ‹ํ•ด์‹œ๋ฅผ ์ ์–ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋จ

# git revert ์ปค๋ฐ‹ํ•ด์‹œ

โ†’ reset๊ณผ ๋‹ฌ๋ฆฌ ์ปค๋ฐ‹๋‚ด์—ญ์„ ์ง€์šฐ์ง€ ์•Š๊ณ  ๋˜๋Œ๋ฆฌ๊ธฐ ์›ํ•˜๋Š” ์‹œ์ ์˜ ์ปค๋ฐ‹์˜ ๋ณ€๊ฒฝ๋‚ด์—ญ์„ ๊ฑฐ๊พธ๋กœ ์‹คํ–‰ํ•œ ๋’ค, ์ปค๋ฐ‹์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

โ†’ ์ฆ‰, (2)๋ฒˆ์˜ ์ปค๋ฐ‹๋‚ด์—ญ์„ revertํ•˜๋ฉด "(5) b.txt ์‚ญ์ œ" ์ปค๋ฐ‹์ด ๋ฐœ์ƒํ•œ๋‹ค.

โ†’ ๋งŒ์•ฝ์—, ์ค‘๊ฐ„์— ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ถฉ๋Œ๋‚˜๋Š” ํŒŒ์ผ ์ˆ˜์ • ํ›„, git revert --continue๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

โ†’ ์˜ˆ๋ฅผ ๋“ค์–ด, (1)๋ฒˆ์˜ ์ปค๋ฐ‹๋‚ด์—ญ์„ revertํ•˜๊ฒŒ ๋˜๋ฉด (3)๋ฒˆ ์ปค๋ฐ‹์—์„œ ํ•ด๋‹น ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์˜€์œผ๋ฏ€๋กœ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ํŒŒ์ผ์„ ์ง์ ‘ ์‚ญ์ œํ•œ ๋‹ค์Œ git revert --continue๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

# git revert ์ปค๋ฐ‹ํ•ด์‹œ --no-commit

โ†’ ๋˜๋Œ๋ฆฌ๋Š” ์›ํ•˜๋Š” ์‹œ์ ์˜ ์ปค๋ฐ‹์˜ ๋ณ€๊ฒฝ๋‚ด์—ญ์„ ๊ฑฐ๊พธ๋กœ ์‹คํ–‰ํ•œ ๋’ค, Commit์„ ํ•˜์ง€ ์•Š๊ธฐ์— ์ถ”๊ฐ€์ ์œผ๋กœ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ง„ํ–‰ํ•œ ๋‹ค์Œ ์ปค๋ฐ‹ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

โ†’ ๋งŒ์•ฝ, ํ•ด๋‹น revert ๊ณผ์ • ์ž์ฒด๋ฅผ ์ทจ์†Œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด git reset --hard๋ฅผ ํ•ด์ค€๋‹ค.

# git restore --source=์ปค๋ฐ‹ํ•ด์‹œ ํŒŒ์ผ๋ช…

โ†’ํŠน์ • ํŒŒ์ผ์„ ์›ํ•˜๋Š” ์ปค๋ฐ‹ ์‹œ์ ์˜ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฐ๋‹ค.


[์ฐธ๊ณ ] reset vs revert

  • reset, revert๋Š” ๊ฐ๊ฐ ๊ณผ๊ฑฐ์˜ ์ปค๋ฐ‹๋‚ด์—ญ์œผ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ reset์€ ์ด์ „์˜ ์ปค๋ฐ‹๋‚ด์—ญ์„ ์‚ญ์ œํ•˜๊ณ  revert๋Š” ๊ธฐ์กด์˜ ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ์œ ์ง€ํ•œ๋‹ค๋Š” ์ฐจ์ด์ ์ด ์žˆ๋‹ค.

 

  • ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ์›๊ฒฉ ์ €์žฅ์†Œ์— pushํ•˜์—ฌ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์™€ ์ปค๋ฐ‹๋‚ด์—ญ์ด ๊ณต์œ ๊ฐ€ ๋œ ๊ฒฝ์šฐ์—, reset์„ ์“ฐ๋ฉด ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์˜ ์ฝ”๋“œ์™€ ์‹ฌ๊ฐํ•œ ์ถฉ๋Œ์„ ์ผ์œผํ‚ฌ ์—ฌ์ง€๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ํ•œ ๋ฒˆ ๊ณต์œ ๊ฐ€ ๋œ ์ปค๋ฐ‹๋“ค์€ revert๋ฅผ ์ด์šฉํ•ด์„œ ๋˜๋Œ๋ฆฌ๋„๋ก ํ•œ๋‹ค.

 

[์ฐธ๊ณ ] reset ๋ณต๊ตฌ

  • reset์€ ์œ„์—์„œ ๋งํ–ˆ๋‹ค์‹œํ”ผ ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ์‚ญ์ œํ•œ๋‹ค๊ณ  ํ•˜์˜€๋Š”๋ฐ ๋งŒ์•ฝ์— ์‹ค์ˆ˜๋กœ reset ๋ช…๋ น์–ด๋กœ ์‚ญ์ œํ•˜์ง€ ๋ง์•„์•ผ ํ•  ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ์‚ญ์ œํ–ˆ์„ ๊ฒฝ์šฐ์—๋Š” git reflog ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ญ์ œํ•œ ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  • reflog ๋ช…๋ น์–ด๋Š” Git์—์„œ ์ˆ˜ํ–‰ํ•œ ์ž‘์—… ๋‚ด์—ญ์„ ์ถœ๋ ฅํ•˜๋ฏ€๋กœ ๊ณผ๊ฑฐ์— ์ˆ˜ํ–‰ํ•œ ์ž‘์—… ๋‚ด์—ญ์„ ์‚ดํŽด๋ณด๊ณ  ํ•ด๋‹น ์‹œ์ ์œผ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ˆ˜๋กœ reset ํ–ˆ์–ด๋„ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

git reset --hard HEAD~4
git reflog
5379d71 (HEAD -> main) HEAD@{0}: reset: moving to HEAD~4
df279d4 HEAD@{1}: rebase (finish): returning to refs/heads/main
                ...
                ...
                ...
git reset --hard 5379d71 

5) ๋ธŒ๋žœ์น˜ ๊ด€๋ จ ๋ช…๋ น์–ด

# git branch

โ†’ ๋ธŒ๋žœ์น˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉฐ, "*" ํ‘œ์‹œ ์žˆ๋Š” ๊ณณ์ด ํ˜„์žฌ ์ž‘์—…์ค‘์ธ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ด

# git branch ๋ธŒ๋žœ์น˜๋ช…

โ†’ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ

# git switch ๋ธŒ๋žœ์น˜๋ช…

โ†’ ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ด๋™

# git switch -c ๋ธŒ๋žœ์น˜๋ช…

โ†’ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑํ•˜๋ฉด์„œ ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ด๋™

โ†’ "git checkout -b ๋ธŒ๋žœ์น˜๋ช…" ๋ช…๋ น์–ด์™€ ๋™์ผํ•˜์ง€๋งŒ Git 2.23 ๋ฒ„์ „ ์ดํ›„๋ถ€ํ„ฐ Checkout ๋ช…๋ น์–ด์˜ ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด switch, restore๋กœ ๋ถ„๋ฆฌ๋จ์— ๋”ฐ๋ผ switch ๋ช…๋ น์–ด๋ฅผ ์ ๊ทน ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์ž

# git branch -d ๋ธŒ๋žœ์น˜๋ช…

โ†’ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œ

# git branch -D ๋ธŒ๋žœ์น˜๋ช…

โ†’ ์‚ญ์ œํ•  ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹ ๋‚ด์šฉ์ด ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ๊ทธ๋™์•ˆ ์ž‘์—…ํ•œ ๋‚ด์šฉ์ด ์žˆ์–ด ์‚ญ์ œ๊ฐ€ ์•ˆ๋  ๋•Œ๋Š” -D ์˜ต์…˜์„ ์ฃผ์–ด ๊ฐ•์ œ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค.

# git branch -m "๊ธฐ์กด ๋ธŒ๋žœ์น˜๋ช…" "์ƒˆ ๋ธŒ๋žœ์น˜๋ช…"

โ†’ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ

6) ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ (merge, rebase)

[๊ธฐ์กด]                     
ใ…ฃ
ใ…ฃ                   
ใ…ฃ                 
ใ…ฃ ใ…ฃ               
ใ…ฃ ใ…ฃ            
ใ…ฃ /             
ใ…ฃ/                
ใ…ฃ     sHu ๋ธŒ๋žœ์น˜               
main ๋ธŒ๋žœ์น˜ 

[merge]
ใ…ฃ
ใ…ฃ\                   
ใ…ฃ \                 
ใ…ฃ ใ…ฃ               
ใ…ฃ ใ…ฃ            
ใ…ฃ /             
ใ…ฃ/                
ใ…ฃ     sHu ๋ธŒ๋žœ์น˜               
main ๋ธŒ๋žœ์น˜ 

[rebase]
ใ…ฃ sHu ๋ธŒ๋žœ์น˜ (HEAD)
ใ…ฃ
ใ…ฃ
ใ…ฃ 
ใ…ฃ main ๋ธŒ๋žœ์น˜ (HEAD)
ใ…ฃ                
ใ…ฃ               
ใ…ฃ            
ใ…ฃ             
ใ…ฃ              
ใ…ฃ     sHu ๋ธŒ๋žœ์น˜               
main ๋ธŒ๋žœ์น˜ 

# git merge "๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜๋ช…"

โ†’ ๋‘ ๋ธŒ๋žœ์น˜๋ฅผ ํ•œ ์ปค๋ฐ‹์— ์ด์–ด๋ถ™์ด๋ฉฐ, ๋ธŒ๋žœ์น˜์˜ ์‚ฌ์šฉ๋‚ด์—ญ์„ ๋‚จ๊ธธ ํ•„์š”๊ฐ€ ์žˆ์„ ๋–„, ์‚ฌ์šฉํ•œ๋‹ค.

โ†’ ๋ธŒ๋žœ์น˜๋ฅผ merge ํ•  ๋•Œ๋Š” ๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜๊ฐ€ ์•„๋‹ˆ๋ผ ๋ณ‘ํ•ฉ๋˜๋Š” ๋ธŒ๋žœ์น˜์—์„œ ํ•ด๋‹น ์ปค๋งจ๋“œ๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์˜ sHu ๋ธŒ๋žœ์น˜๊ฐ€ main ๋ธŒ๋žœ์น˜๋กœ merge ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด main ๋ธŒ๋žœ์น˜์—์„œ merge ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

โ†’ ๋˜ํ•œ, merge๋„ ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์ด๋ฏ€๋กœ reset์œผ๋กœ merge ์ „์œผ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ merge ํ•œ ๋‹ค์Œ, ๋ณ‘ํ•ฉ๋œ ๋ธŒ๋žœ์น˜ (sHu)๋Š” ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

โ†’ ๋งˆ์ง€๋ง‰์œผ๋กœ merge ์‹คํ–‰ ์‹œ, ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ง์ ‘ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•œ ๋‹ค์Œ git add + git commit์„ ํ†ตํ•ด ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•œ๋‹ค.

โ†’ ๋งŒ์•ฝ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ํŒŒ์ผ์ด ๋งŽ์œผ๋ฉด git merge --abort๋กœ merge ๊ณผ์ •์„ ์ค‘๋‹จ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

# git rebase "๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜๋ช…"

โ†’ ๋ธŒ๋žœ์น˜๋ฅผ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์— ์ด์–ด๋ถ™์ด๋ฉฐ ํ•œ ์ค„๋กœ ๊น”๋”ํžˆ ์ •๋ฆฌ๋œ ๋‚ด์—ญ์„ ์œ ์ง€ํ•˜๊ธฐ ์›ํ•  ๋•Œ ์ ํ•ฉํ•œ ๋ฐฉ์‹์ด๋‹ค.

โ†’ merge ๋ฐฉ์‹์€ ๋ธŒ๋žœ์น˜์˜ ์‚ฌ์šฉ ๋‚ด์—ญ์„ ๋‚จ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค๋ฉด ๋ธŒ๋žœ์น˜์˜ ๊ตฌ์กฐ๊ฐ€ ๊ต‰์žฅํžˆ ๋ณต์žกํ•ด์ง€๋Š”๋ฐ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ rebase๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ธŒ๋žœ์น˜์˜ ์‚ฌ์šฉ ๋‚ด์—ญ์„ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  ๊ธฐ์กด์˜ ๋ธŒ๋žœ์น˜์— ์ด์–ด๋ถ™์ด๊ฒŒ ๋˜๋ฏ€๋กœ ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•ด์ง„๋‹ค.

โ†’ ๋˜ํ•œ, ํŒ€์›๊ณผ ๊ณต์œ ๋œ ์ปค๋ฐ‹์— ๋Œ€ํ•ด์„œ๋Š” rebase๋ฅผ ์“ฐ๊ฒŒ ๋˜๋ฉด ์ถฉ๋Œ์„ ๋ฐœ์ƒํ•  ์—ฌ์ง€๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

โ†’ merge์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋ณ‘ํ•ฉ๋˜๋Š” ๋ธŒ๋žœ์น˜๊ฐ€ ์•„๋‹ˆ๋ผ ๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜์—์„œ ํ•ด๋‹น ์ปค๋งจ๋“œ๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์˜ sHu ๋ธŒ๋žœ์น˜๊ฐ€ main ๋ธŒ๋žœ์น˜๋กœ rebase ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด main ๋ธŒ๋žœ์น˜๊ฐ€ ์•„๋‹ˆ๋ผ sHu ๋ธŒ๋žœ์น˜์—์„œ rebase ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

โ†’ ๊ทธ๋ฆฌ๊ณ  rebase๋Š” ๋‹จ์ˆœํžˆ ๋ธŒ๋žœ์น˜๋ฅผ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์— ์ด์–ด ๋ถ™์ธ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— main ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜์—ฌ git merge sHu ๋ธŒ๋žœ์น˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์ฃผ์–ด์•ผ ํ•ด๋‹น ๋ธŒ๋žœ์น˜์˜ ์‹œ์ ์œผ๋กœ HEAD๊ฐ€ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค.

โ†’ ๋˜ํ•œ, merge ๋•Œ์™€ ๋™์ผํ•˜๊ฒŒ ๋ณ‘ํ•ฉํ•œ ๋ธŒ๋žœ์น˜ (sHu)๋Š” ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

โ†’ ๋งˆ์ง€๋ง‰์œผ๋กœ rebase ์‹คํ–‰ ์‹œ, ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ง์ ‘ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•œ ๋‹ค์Œ git add + git rebase --continue๋ฅผ ํ†ตํ•ด ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ merge ๋ฐฉ์‹์—์„œ๋Š” ์ด์–ด๋ถ™์ด๊ณ ์ž ํ•˜๋Š” ๋ธŒ๋žœ์น˜์˜ ์ตœ์ข… ์ปค๋ฐ‹๋งŒ ๋‹ค๋ฃจ๋Š”๋ฐ rebase๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ์ด์–ด๋ถ™์ด๋Š” ๊ฑฐ๋ผ์„œ ์ด์–ด๋ถ™์ธ ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹์ด ์—ฌ๋Ÿฌ ๊ฐœ์ด๊ณ  ์ปค๋ฐ‹๋งˆ๋‹ค ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ์ปค๋ฐ‹ ์ˆ˜ ๋งŒํผ git add + git rebase --continue๋ฅผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•œ๋‹ค.

โ†’ ์ถฉ๋Œ์ด ๋ชจ๋‘ ํ•ด๊ฒฐ๋˜๋ฉด git merge ๋ธŒ๋žœ์น˜๋กœ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ , ์ถฉ๋Œ์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋ฐœ์ƒํ•ด์„œ ๋ฐ”๋กœ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•  ๊ฑฐ ๊ฐ™์œผ๋ฉด git rebase --abort๋กœ rebase ๊ณผ์ •์„ ์ค‘๋‹จ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

[์ •๋ฆฌ] ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ ๊ณผ์ • - merge, rebase

[๊ฐ€์ •]                     
ใ…ฃ
ใ…ฃ                   
ใ…ฃ                 
ใ…ฃ ใ…ฃ               
ใ…ฃ ใ…ฃ            
ใ…ฃ /             
ใ…ฃ/                
ใ…ฃ     sHu ๋ธŒ๋žœ์น˜               
main ๋ธŒ๋žœ์น˜ 
  • ์œ„์™€ ๊ฐ™์ด main ๋ธŒ๋žœ์น˜, sHu ๋ธŒ๋žœ์น˜๊ฐ€ ์žˆ๊ณ  sHu ๋ธŒ๋žœ์น˜๋ฅผ main ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉํ•˜๋„๋ก merge, rebase ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค.

 

  • merge ๋ฐฉ์‹

โ‘  main ๋ธŒ๋žœ์น˜์—์„œ "git merge sHu" ๋ช…๋ น์„ ์‹คํ–‰

โ‘ก merge ์‹คํ–‰ ์‹œ, ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์—ฌ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ํŒŒ์ผ ์ˆ˜์ •

โ‘ข main ๋ธŒ๋žœ์น˜์—์„œ git add + git commit ์œผ๋กœ merge ์ถฉ๋Œ ํ•ด๊ฒฐ โ†’ merge ์™„๋ฃŒ

โ‘ฃ ๋งŒ์•ฝ, ์ถฉ๋Œ ํŒŒ์ผ์ด ๋งŽ์•„ merge๋ฅผ ์ทจ์†Œํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด git merge --abort ์‹คํ–‰

 

  • rebase ๋ฐฉ์‹

โ‘  sHu ๋ธŒ๋žœ์น˜์—์„œ "git rebase main" ๋ช…๋ น์„ ์‹คํ–‰

โ‘ก rebase ์‹คํ–‰ ์‹œ, ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์—ฌ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ํŒŒ์ผ ์ˆ˜์ •

โ‘ข git add + git rebase --continue ์œผ๋กœ rebase ์ถฉ๋Œ ํ•ด๊ฒฐ

โ‘ฃ ๋งŒ์•ฝ, sHu ๋ธŒ๋žœ์น˜ ์ปค๋ฐ‹ ์ˆ˜๋งŒํผ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด (2) ~ (3) ๊ณผ์ •์„ ์ปค๋ฐ‹ ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต

โ‘ค main ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ (git switch main)

โ‘ฅ main ๋ธŒ๋žœ์น˜์—์„œ, "git merge sHu" ๋ช…๋ น์„ ์‹คํ–‰ โ†’ rebase ์™„๋ฃŒ

โ‘ฆ ๋งŒ์•ฝ, ์ถฉ๋Œ ํŒŒ์ผ์ด ๋งŽ์•„ rebase๋ฅผ ์ทจ์†Œํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด git rebase --abort ์‹คํ–‰

๋ฐ˜์‘ํ˜•

'๐Ÿ“š ์—ฐ์žฌ ์‹œ๋ฆฌ์ฆˆ > ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ๋ฉด ์ข‹์„ ๋‚ด์šฉ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ ์ „๋žต (Git-Flow)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!  (0) 2023.09.26
VSCode ์œ ์šฉํ•œ Extension ๋ชจ์Œ (์ •๋ฆฌ์ค‘)  (0) 2023.07.30
๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ - ์›์ž์„ฑ (Atomicity)  (0) 2023.05.03
๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ - ๊ฐ€์‹œ์„ฑ (Visibility)  (0) 2023.05.03
๋™์‹œ์„ฑ (Concurrency) ๋ฐ ๋ณ‘๋ ฌ์„ฑ (Parallelism)  (0) 2023.05.02
'๐Ÿ“š ์—ฐ์žฌ ์‹œ๋ฆฌ์ฆˆ/์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ๋ฉด ์ข‹์„ ๋‚ด์šฉ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ ์ „๋žต (Git-Flow)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!
  • VSCode ์œ ์šฉํ•œ Extension ๋ชจ์Œ (์ •๋ฆฌ์ค‘)
  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ - ์›์ž์„ฑ (Atomicity)
  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ - ๊ฐ€์‹œ์„ฑ (Visibility)
KR_DEV
KR_DEV
๊ณต๋ถ€์šฉ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค. :)
๋ฐ˜์‘ํ˜•
KR_DEV
All about IT
KR_DEV
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ์ „์ฒด (139)
    • ๐Ÿ“š ์—ฐ์žฌ ์‹œ๋ฆฌ์ฆˆ (19)
      • ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ๋ฉด ์ข‹์„ ๋‚ด์šฉ (11)
      • ์ž์ฃผ ์“ฐ์ด๋Š” IT ์šฉ์–ด ์ •๋ฆฌ (6)
      • ์žก๋‹คํ•œ IT ์ •๋ณด (2)
    • ๐ŸŽฎ Toy Project (1)
    • ๐Ÿ’ฏ Coding Test (35)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ…Œ์ŠคํŠธ (14)
      • SQL ํ…Œ์ŠคํŠธ (21)
    • ๐Ÿ’ป Computer Science (14)
      • Hardware (4)
      • Operating System (3)
      • Network (4)
      • Database (3)
      • Data Structures (0)
      • Algorithms (0)
    • ๐ŸŒ Front End (0)
      • HTML5 (0)
      • CSS3 (0)
    • ๐Ÿ‘จโ€๐Ÿ’ป Back End (30)
      • Spring (5)
      • MySQL (12)
      • Redis (3)
      • OOP (0)
      • Design Pattern (0)
      • HTTP (2)
      • Servlet (1)
      • JDBC (7)
      • MSA (0)
    • ๐Ÿ› ๏ธ Devops (12)
      • HAProxy (1)
      • Linux (6)
      • Virtual Machine (4)
      • Container (0)
      • Ansible (1)
    • ๐Ÿง Programming (20)
      • Java (10)
      • Python (10)
    • ๐ŸŒฅ๏ธ Cloud (2)
      • AWS (1)
      • Oracle Cloud (0)
    • ๐Ÿ’พ Storage (5)
      • MiniO (3)
    • ๐Ÿ” Security & Hacking (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

  • ๊ตฌ๊ธ€ ์• ๋“œ์„ผ์Šค ํ†ต๊ณผํ–ˆ๋„ค์š” !!!
  • ์•ˆ๋…•ํ•˜์„ธ์š”.

์ธ๊ธฐ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.2
KR_DEV
Git ์ž์ฃผ ์“ฐ์ด๋Š” ๋ช…๋ น์–ด ๋ชจ์Œ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.