๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

๐Ÿ”ธGit์œผ๋กœ ํ˜‘์—…๋Šฅ๋ ฅ ๊ธฐ์ดˆ ๋‹ค์ง€๊ธฐ ๋ณธ๋ฌธ

๐Ÿ—‚๏ธGit/โšกver.0

๐Ÿ”ธGit์œผ๋กœ ํ˜‘์—…๋Šฅ๋ ฅ ๊ธฐ์ดˆ ๋‹ค์ง€๊ธฐ

4:Bee 2024. 2. 8. 23:28
728x90

* ๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ์งง์€ ๊ฐ•์˜์ธ ๋งŒํผ ํ•œ ๊ฐ•์˜๋‹น ํ•œ ํฌ์ŠคํŒ…์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์ง€ ์•Š๋‹ค. ๋‹ค๋งŒ ๊ฐœ์ธ์ ์œผ๋กœ ์‹ค์Šตํ•œ ๊ณผ์ •๋“ค์ด ๋งŽ์•„ '๋” ๋ณด๊ธฐ'๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉฐ ์ฒญ๊ฐ• ํ›„ ํฌ์ŠคํŒ…๊ณผ ํ•จ๊ป˜ ์‹ค์Šต ํ•ด๋ณด๊ธธ ๊ถŒ์œ ํ•œ๋‹ค.


1๊ฐ•์˜ : ์ปค๋ฐ‹(commit)ํ•˜๊ณ  ํ‘ธ์‰ฌ(push)ํ•˜๊ธฐ

  • git clone ~ : ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋‚ด ์ปดํ“จ๋„ˆ์— ๋ณต์‚ฌํ•˜๋Š” ์ผ
  • git add ~ / . : ์ €์žฅ์„ ์›ํ•˜๋Š” ํŒŒ์ผ๋“ค์„ ๋ฌถ์–ด git์— ์ €์žฅํ•˜๋Š” ์ผ(commit ์ค€๋น„)
  • git commit -m "~" : ์ €์žฅํ•˜๋Š” ์‹œ์ ์„ ๊ธ€๋กœ ํ‘œ๊ธฐํ•˜๋Š” ๊ฒƒ.
  • git push ~ : github์— ์—…๋กœ๋“œํ•˜๋Š” ์ผ

2๊ฐ•์˜ : ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹์œผ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ

  • git checkout ~ : ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹์œผ๋กœ ๋˜๋Œ์•„ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
  • sourceTree์˜ ์ฝ”๋“œ๋ญ‰์น˜ ๋ฒ„๋ฆฌ๊ธฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋˜๋กค๋ฆด ์ˆ˜ ์žˆ๋‹ค.

* ๋‚ด๊ฐ€ ๋งŒ๋“  ํŒŒ์ผ๋กœ ์‹ค์Šตํ•˜๊ธฐ

๋”๋ณด๊ธฐ

๋จผ์ € class_2.md ํŒŒ์ผ์„ VSC์— ์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  VSC์— ์ €์žฅํ•œ ํ›„์— ๋‹ค์‹œ ์ˆ˜์ •์„ ํ•˜๊ณ  ์ €์žฅ์„ ํ–ˆ๋‹ค. status๋ช…๋ น์–ด๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด Untracked files๋ผ๊ณ  ๋˜์–ด ์žˆ๋‹ค. ๋œป์€ '์ถ”์ ๋˜์ง€ ์•Š๋Š”๋‹ค.' ์ฆ‰, ํ˜„์žฌ ๋‚ด๊ฐ€ git์— ์ €์žฅ์ด ๋˜์–ด ์žˆ์ง€ ์•Š์€ ํŒŒ์ผ์ด๊ธฐ์— ์ถ”์ ์ด ๋˜์ง€ ์•Š๋Š” ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค์‹œ ๋งํ•ด์„œ git์— add(git์— ์ €์žฅ์ด)๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— checkout์„ ์‹คํ–‰ํ•ด๋„ ์•„๋ฌด๋Ÿฐ ๋ณ€ํ™”๊ฐ€ ์—†์„ ๊ฒƒ์ด๋‹ค.

rdwoo1024@DESKTOP-B1D88NN MINGW64 /d/myclass/Git/Github/gitflow_test/fixed (main)
$ git status
On branch main
Your branch is up to date with 'origin/main'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        class_2.md

nothing added to commit but untracked files present (use "git add" to track)

git add๋ฅผ ํ•œ git status๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์ด์ œ ์—ฌ๊ธฐ์„œ ํ•ด๋‹น ํŒŒ์ผ์— ๊ธ€์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. 

rdwoo1024@DESKTOP-B1D88NN MINGW64 /d/myclass/Git/Github/gitflow_test/fixed (main)
$ git status
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   class_2.md

์ด์ œ checkout์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์•„์ง„๋‹ค.

rdwoo1024@DESKTOP-B1D88NN MINGW64 /d/myclass/Git/Github/gitflow_test/fixed (main)
$ git checkout -- class_2.md

๋”ฐ๋ผ์„œ add๋ฅผ ํ†ตํ•ด์„œ git์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋˜๋Š” commit์„ ํ†ตํ•ด์„œ git์ด ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ๋Š” ์ƒํƒœ์˜ ํŒŒ์ผ๋“ค์„ ๊ณผ๊ฑฐ๋กœ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ํ˜„์žฌ ๋‚˜์˜ local์—์„œ ๋ณ€ํ™”๋˜๋Š” ๊ฒƒ๋“ค์„ git์ด ๋ชจ๋‘ ์ฝ์–ด ๋‚ผ ์ˆ˜ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ add์™€ commit์„ ํ†ตํ•ด์„œ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ๋“ค๋งŒ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.


2 ๊ฐ•์˜ : branch ๋งŒ๋“ค๊ธฐ

  • README.md์— ์ƒˆ๋กœ์šด ๋‚˜๋งŒ์˜ branch ๊ทœ์น™ ์ž‘์„ฑํ•˜๊ธฐ -> lecuture๋ธŒ๋Ÿฐ์น˜์— ๊ฐ•์˜๋ฅผ ๋“ค์„ ๋•Œ ๋•Œ๋งˆ๋‹ค ์ถ”๊ฐ€ํ•˜๊ณ  pr์„ ๋‚ ๋ ค ๋ณผ ๊ฒƒ.
  • branch : ๊ธฐ์กด ๋‚ด์šฉ์„ ์œ ์ง€ํ•œ ์ฒด ์ƒˆ๋กœ์šด ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • checkout : ํŠน์ • ๋ธŒ๋žœ์น˜(ํ˜น์€ ์ปค๋ฐ‹)์œผ๋กœ ๋Œ์•„๊ฐ€๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ.
  • ์†Œ์ŠคํŠธ๋ฆฌ์˜ ์ฒดํฌ์•„์›ƒ : ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ ๋”๋ธ” ํด๋ฆญํ•˜๋ฉด ์ฒดํฌ์•„์›ƒ ๊ธฐ๋Šฅ

* ๋‚ด๊ฐ€ ๋งŒ๋“  ํŒŒ์ผ๋กœ ์‹ค์Šตํ•˜๊ธฐ

๋”๋ณด๊ธฐ

ํ˜„์žฌ main์˜ sourceTree๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ด์ƒํƒœ์—์„œ ์šฐ๋ฆฌ๊ฐ€ class_1.mdํŒŒ์ผ์ด ์ƒ์„ฑ์ด ๋˜๊ธฐ ์ „ ๋ถ€๋ถ„์— lecutre branch๋ฅผ ์ƒ์„ฑํ•  ๊ฒƒ์ด๋‹ค.(์™œ๋ƒ๋ฉด class_1.mdํŒŒ์ผ์ด ์—†๋Š” ๊ณณ์—์„œ class_1.mdํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์•ผ add์™€ commit์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.) ์ดํ›„ lecutre ๋ธŒ๋žœ์น˜์—์„œ ๋‹ค์‹œ calss_1 ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•  ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ œ class_1.md์˜ ๋‚ด์šฉ์„ ํ˜„์žฌ class_1.md๋‚ด์šฉ์ด ์—†๋Š” ๊ณผ๊ฑฐ์—์„œ ๋ถˆ๋Ÿฌ์™€์•ผํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•  ๋ฌธ๋ฒ•์€ checkout์ด๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

git checkout <commit-hash> -- <file-path>

์—ฌ๊ธฐ์„œ <commit-hash>๋Š” ๊ฐ€์ ธ์˜ค๊ณ ์ž ํ•˜๋Š” ์ปค๋ฐ‹์˜ ํ•ด์‹œ์ด๊ณ , <file-path>๋Š” ๊ฐ€์ ธ์˜ค๋ ค๋Š” ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋‹ค. ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ช…๋ น์„ ํ•˜๊ฒŒ ๋˜๋ฉด branch class_1์˜ vsc์—์„œ๋Š” fixedํด๋”์™€ class_1.mdํŒŒ์ผ์ด ์ƒ์„ฑํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

ํ˜„์žฌ branch๊ฐ€ ์ƒ์„ฑ๋œ ๋ชจ์Šต์ด๋‹ค. ์ด์ œ ์ปค๋ฐ‹์„ ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค.

sourceTree์—์„œ add์—†์ด commit๋งŒ ์ง„ํ–‰ ํ–ˆ๋‹ค. ๊ทธ๋žฌ๋”๋‹ˆ ํ˜„์žฌ class_1์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ถ€๋ถ„์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

branch๊ฐ€ class_1์ผ๋•Œ์˜ ๊ฐ€์ง€ ๋ชจ์–‘์ด๋‹ค.
branch๊ฐ€ lecture์ผ๋•Œ์˜ ๊ฐ€์ง€ ๋ชจ์–‘์ด๋‹ค.

์ด์ œ ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ๊ธฐ์–ต์„ ํ•ด๋ด์•ผ ํ•œ๋‹ค. ๋‹ค์Œ ๋™์ž‘์—์„œ ํ•„์š”ํ•œ ๊ฒƒ์€ lecture branch์—์„œ class_2 branch๊ฐ€ ์ƒ์„ฑ์ด๋˜๊ณ  class_2 ํŒŒ์ผ์„ ์ปค๋ฐ‹ํ•ด์•ผํ•œ๋‹ค. ์ด์ „์— ํ–ˆ๋˜ ๋ฐฉ๋ฒ•๊ณผ ๋™์ผํ•˜๊ฒŒ ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. (ํ˜„์žฌ ์ปค๋ฐ‹์ด ๋˜์—ˆ์Œ์„ ์ธ์ง€ํ•˜๊ณ  ์žˆ์–ด์•ผํ•œ๋‹ค.) 

branch๊ฐ€ class_2์ผ๋•Œ์˜ ๊ฐ€์ง€ ๋ชจ์–‘์ด๋‹ค.

์ด๋ ‡๊ฒŒ class_2 branch๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ปค๋ฐ‹๊นŒ์ง€ ์™„๋ฃŒ๋ฅผ ํ–ˆ๋‹ค. main branch์—์„œ ๊ฐ€์ง€ ๋ชจ์–‘์„ ํ™•์ธํ•ด ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

branch๊ฐ€ class_2์ผ๋•Œ์˜ ๊ฐ€์ง€ ๋ชจ์–‘์ด๋‹ค.

์ด์ œ ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ ๊ณผ๊ฑฐ feat! : Don't remove this files, this is description about lectures scripts ๊นŒ์ง€์˜ ์ปค๋ฐ‹์„ ์‚ญ์ œ (์ปค๋ฐ‹์„ ๊ฐ•์ œ ๊ณผ๊ฑฐ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ)ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ๊ฒƒ์€ Add newFile.js์— ์žˆ๋Š” ํŒŒ์ผ์€ ์‚ญ์ œ๋œ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

rdwoo1024@DESKTOP-B1D88NN MINGW64 /d/myclass/Git/Github/gitflow_test (main)
$ git reset --hard 4c7b53a
HEAD is now at 4c7b53a ...

 ํ˜„์žฌ main์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค

๋ญ”๊ฐ€ ์•„์ง ์™„๋ฒฝํ•ด ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค. ๋‹ค์‹œ ๋ณด๋‹ˆ class_2์˜ history๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š”๋‹ค. class_2๊ฐ€ main๊ณผ ํ•จ๊ป˜ HEAD๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค. ์ฆ‰, class_2์˜ ์ƒ์„ฑ ์œ„์น˜๊ฐ€ ๋ถˆ๋ถ„๋ช…ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ backup์„ ํ•  ์ˆ˜ ์žˆ๋Š” branch๋ฅผ lecutre์— ์ƒ์„ฑํ•˜๊ณ  checkout์„ ์ด์šฉํ•ด์„œ backup branch์— class_1๊ณผ class_2์˜ ๊ฐ’๋“ค์„ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ด๋‹ค.

ํ˜„์žฌ back branch๋ฅผ ๋งŒ๋“ค๊ณ  class_2์˜ fixed๋ฅผ git checkout <commit-hash> -- <file-path>๋กœ ๊ฐ€์ง€๊ณ  ์™”๋‹ค.

์œ„์˜ ๋ชจ๋“  ๊ณผ์ •๋“ค์„ ์™„๋ฃŒ ํ•œ ์ƒํƒœ์ด๋‹ค .์ด์ œ commit์„ ํ•˜๋ฉด ๋  ๊ฒƒ์ด๋‹ค.

์ด์ œ commit์„ ํ•˜๊ณ  class_2 branch๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋œ๋‹ค.

commit์„ ์™„๋ฃŒ ํ•œ ๋ชจ์Šต์ด๋‹ค.

์ด์ œ class_2 branch๋ฅผ ์›ํ•˜๋Š” ๊ณณ์œผ๋กœ reset์„ ํ•˜๋ฉด ๋œ๋‹ค. ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ด์ œ ์—ฌ๊ธฐ์„œ ๊ฐ•์ œ push๋ฅผ ํ•˜๊ณ  branch๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์™„๋ฃŒ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. ๋ฌผ๋ก  ์›๊ฒฉ ์ €์žฅ์†Œ์— ์žˆ๋Š” branch๋„ ์‚ญ์ œ ํ•˜๋ฉด ๋œ๋‹ค. ๋ชจ๋“  ๊ณผ์ •์ด ์™„๋ฃŒ๋œ ๋ชจ์Šต์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

backup branch ์ด๋ฆ„์„ class_2๋กœ ๋ณ€๊ฒฝํ•˜์˜€๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ชจ๋“œ branch๋“ค์„ pushํ•˜๊ณ  history ๊ฐ€์ง€๋“ค์„ ๋ณด๋ฉด ์ด์ƒํ•œ ๊ฒƒ์ด ์žˆ๋‹ค. lecture branch์—์„œ class_3๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋Š”๋ฐ ํ˜„์žฌ lecture์˜ ํ˜„์žฌ ์œ„์น˜๊ฐ€ ๊ณผ๊ฑฐ์— ์žˆ๋‹ค ์ด๋ฅผ class_2๋กœ ๋งž์ถ”์–ด์•ผ ํ•œ๋‹ค. ์ด๊ฒƒ์„ reset --hard์œผ๋กœ ์ด๋™ํ•ด๋ณด์ž.

ํ˜„์žฌ local์˜ lecture branch HEAD๋Š” class_2๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง ์›๊ฒฉ ์ €์žฅ์†Œ๋Š” ๊ณผ๊ฑฐ์— ์žˆ๋‹ค. push๋ฅผ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๋‹จ ์ด๋ฒˆ์—๋Š” ๋‚ด๊ฐ€ push๋ฅผ ๊ฐ•์ œ push๋ฅผ ํ•˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋žฌ๋”๋‹ˆ pr์ด ๋‚ ๋ผ์˜จ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์ž lecture์ด ํ˜„์žฌ๋Š” ์–ด๋Š ๋ˆ„๊ตฌ์™€๋„ merge๊ฐ€ ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ๋งŒ์•ฝ merge๊ฐ€ ๋˜์–ด ์žˆ๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ lecture์„ ๊ฑด๋“œ๋ ค์„œ๋Š” ์•ˆ๋˜๋Š” ๊ฒƒ์ด๋‹ค.์ด์ œ class_3 branch๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž. class 3๋ฅผ ๋งŒ๋“ค์–ด๋„ ์œ„์™€ ๊ฐ™์ด ๊ฐ€์ง€๊ฐ€ ๋ป—์–ด์ง€์ง€ ์•Š๋Š”๋‹ค. ๊ทธ ์ด์œ ๋Š” ์•„์ง merge๋ฅผ ํ•˜์ง€ ์•Š์•„์„œ์ด๋‹ค.(branch๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ class_3 history๊ฐ€์ง€ ์ด๋ฏธ์ง€ ์ฒจ๋ถ€๋ฅผ ๋ชปํ–ˆ์ง€๋งŒ ์œ„์™€ ๊ฐ™์€ ๋ชจ์–‘์ž„์„ ์ธ์ง€๋งŒํ•˜๊ณ  ๋‹ค์Œ ์ด๋ฏธ์ง€๋ฅผ ์ฐธ๊ณ ํ•˜์ž.)

 


3. ๊ฐ•์˜ : mergeํ•˜๋Š” ๋ฐฉ๋ฒ•

  • merge : ์›ํ•˜๋Š” branch์™€ branch๋ฅผ ํ•ฉ์น˜๋Š” ๊ณผ์ •์ด๋‹ค.
  • ์ถฉ๋Œ์ด ์ผ์–ด ๋‚  ์ˆ˜ ์žˆ๋‹ค. ์ถฉ๋Œ์€ ๋‹ค์Œ ์‹œ๊ฐ„์— ๋‹ค์‹œ ์•Œ์•„ ๋ณผ ๊ฒƒ์ด๋‹ค.
  • mergeํ•˜๋Š” ๊ณผ์ •์—์„œ ํ•ฉ์ณ์งˆ branch์™€ ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ™•์ธํ•ด์•ผ merge๊ฐ€ ์Šน์ธ์ด ๋œ๋‹ค.
  • ํ—ค๋“œ ๋ธŒ๋žœ์น˜(ํ•ฉ์ณ์ง์„ ๋‹นํ•˜๋Š” branch)์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์—†์–ด์•ผ ํ•œ๋‹ค.
  • ๋ณ‘ํ•ฉ ๋Œ€์ƒ ๋ธŒ๋žœ์น˜๊ฐ€ ํ—ค๋“œ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘๋œ ๊ฒฝ์šฐ ์•„์ฃผ ์‰ฝ๊ฒŒ ๋ณ‘ํ•ฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.(Fast-Forward)
  • ํ—ค๋“œ ๋ธŒ๋žœ์น˜์— ์ถ”๊ฐ€์ ์ธ ์ปค๋ฐ‹์ด ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ ์ง„์งœ ๋ณ‘ํ•ฉ์ด ํ•„์š”ํ•ด์ง„๋‹ค. ์ถฉ๋Œ์ด ๋‚ ์ˆ˜๋„ ์žˆ๋„ ์žˆ์œผ๋‹ˆ ๊ฒ๋จน์ง€ ๋ง๋ผ
  • merge๋ฅผ ํ•  ๋•Œ lecture branch์ธ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ branch merge๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋Œ€์—์„œ ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด๋‹ค.

main๊นŒ์ง€ ๋ณ‘ํ•ฉํ•œ ๋ชจ์Šต์ด๋‹ค. ์‚ฌ์‹ค ์™„๋ฒฝํ•˜๊ฒŒ ๋งˆ์Œ์—๋“ค์ง€๋Š” ์•Š๋Š”๋‹ค.์šฐ์„  class_3๊ฐ€ class_2์—์„œ ๊ฐ€์ง€๋ฅผ ์นœ๊ฑฐ ๊ฐ™์•„์„œ ์กฐ๊ธˆ ์•„์‰ฝ๋‹ค. ํ•ญ์ƒ ํ•œ ์ž‘์—…์„ ๋ชจ๋‘ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ  merge๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์•„ ๋ณด์ธ๋‹ค. branch ์ƒ์„ฑ์€ soureTree๋ณด๋‹ค bash์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์•„ ๋ณด์ธ๋‹ค.

* ๋‚ด๊ฐ€ ๋งŒ๋“  ํŒŒ์ผ๋กœ ์‹ค์Šตํ•˜๊ธฐ

๋”๋ณด๊ธฐ
merge๋ฅผ ํ–ˆ์„ ๋•Œ์˜ ๋ชจ์Šต์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

merge๋ฅผ ํ•˜๊ณ ๋‚˜๋‹ˆ ์ผ๋ ฌ์ด์˜€๋” ๊ฐ€์ง€๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ชจ์Šต์˜ ๊ฐ€์ง€๋กœ ๋ณ€ํ™˜์ด ๋˜์—ˆ๋‹ค. ๋‚˜๋จธ์ง€ branch๋„ ๋ณ‘ํ•ฉ์„ ํ•ด๋ณด๋ คํ•˜์ง€๋งŒ ํ˜„์žฌ lecture๊ฐ€ ๋’ค์— ๋ฐ€๋ ค ์žˆ์–ด์„œ class_1,2,3๋ณด๋‹ค ๋ฐ€๋ ค์žˆ๋‹ค. ๊ทœ์น™์ƒ lecture์€ ๋ณ€๊ฒฝ์ด ๋˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ•์ œ๋กœ class_1์œผ๋กœ ์˜ฎ๊ธธ ๊ฒƒ์ด๋‹ค. 

ํ˜„์žฌ๋Š” lecture์ด class_1๋ณด๋‹ค ๋จผ์ € ์•ž์„œ์žˆ๋‹ค. ์ด์ œ ๋‚˜๋จธ์ง€๋“ค์„ mergeํ•ด๋ณด๊ฒ ๋‹ค. mergeํ•  ๋Œ€์ƒ branch ํ™˜๊ฒฝ์— ์žˆ๋Š” ์ƒํ™ฉ์—์„œ merge๋ฅผ ํ•ด์•ผํ•œ๋‹ค. ์œ„์˜ ๋ฐฉ๋ฒ•๋“ค์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋‹ˆ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์˜ ์ฃผ์˜๋ฅผ ์ž˜ ์ฝ๊ธฐ๋ฅผ ๋ฐ”๋ž€๋‹ค.


4๊ฐ•์˜ : ํ’€(pull) ํ•˜๊ธฐ

  • git pull~ : ์„œ๋ฒ„์˜ ๋‚ด์šฉ์ด ๋‚ด PC๋ณด๋‹ค ์ตœ์‹ ์ผ ๊ฒฝ์šฐ pull์„ ์ ์šฉํ•œ๋‹ค.
  • ์ถฉ๋Œ์ด ๋‚  ์ˆ˜ ์žˆ์ง€๋งŒ ๋†€๋ผ์ง€ ๋ง์ž.
  • pull = fetch + merge
  • ์ถฉ๋Œ์ด ๋‚ฌ์„๋•Œ
    • ํ˜„์žฌ ๋‚˜์˜ branch๋ฅผ ๋ณ€๊ฒฝํ•จ๊ณผ ๋™์‹œ์— master๋‚˜ ๋‹ค๋ฅธ branch์—์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ๋Š” ๋„์ค‘ ๋‚ด๊ฐ€ branch๋ฅผ mergeํ•˜๋ ค๋Š” ์ˆœ๊ฐ„ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋•Œ ์ง์ ‘ ์—๋””ํ„ฐ์—์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์„ ํ™•์ธํ•˜๊ณ  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ €์žฅํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปค๋ฐ‹์„ ํ•ด์ค€๋‹ค.
    • ๋˜๋Š” '์ €์žฅ์†Œ ๊ฒƒ์œผ๋กœ ์ถฉ๋Œ ํ•ด๊ฒฐ' ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ด๋Š” ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ์ถฉ๋Œ ๋ ๊ฒฝ์šฐ ์‹คํ–‰ํ•˜๋ฉด ์ข‹๋‹ค.

5๊ฐ•์˜ : ๋ฆฌ์…‹(reset) ํ•˜๊ธฐ - ๋น„์ถ”

  • git reset --hard ~ : ์ปค๋ฐ‹์„ ๋˜๋Œ๋ฆฐ๋‹ค.
  • reset ์ดํ›„ git push ~ ~ --force๋Š” ๊ฐ•์ œ ์˜ต์…˜์„ ์„ ํƒํ•ด์•ผํ•œ๋‹ค.
  • ์ด์ „ ์ปค๋ฐ‹์ด ์‚ฌ๋ผ์ง„๋‹ค.

6๊ฐ•์˜ : ๋ธŒ๋ Œ์น˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ปค๋ฐ‹ ๋˜๋Œ๋ฆฌ๊ธฐ - ๋‹ค์‹œ ๋“ค์–ด๋ณด๊ธฐ

  • ์žฅ์ ‘ :์‰ฝ๋‹ค
  • ๋‹จ์  : ํŠธ๋ฆฌ๊ฐ€ ๋”๋Ÿฌ์›Œ์ง„๋‹ค.
  • ๊ณผ๊ฑฐ๋กœ ๋Œ์•„๊ฐˆ ์œ„์น˜์— ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ž‘์—…์„ ํ•œ๋‹ค.

7๊ฐ•์˜ : Revert๋ฅผ ์‚ฌ์šฉํ•ด ์ปค๋ฐ‹ ๋˜๋Œ๋ฆฌ๊ธฐ

  • Revert์™€ Reset์˜ ์ฐจ์ด๋ฅผ ์ƒ๊ฐํ•ด๋ณด๊ธฐ
    • ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ '์ด ์ปค๋ฐ‹ ํ˜„์žฌ ๋ธŒ๋Ÿฐ์น˜๋กœ ์ดˆ๊ธฐํ™”'๋Š” ๊ฐ•์ œ reset --hard๋ฅผ ํ•œ๊ฒƒ์ด๋‹ค.
  • push๋ฅผ ํ•˜๊ธฐ ์ „์— revert๋ฅผ ํ•ด์•ผํ•œ๋‹ค.
  • ์žฅ์ : commit์„ ๋‚จ๊ธฐ๊ณ  ์ด์ „์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค.
  • ๋‹จ์ : ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜๊ฐ€ ์‰ฝ๋‹ค.

pr์—์„œ merge๋ฅผ ํ–ˆ์„ ๊ฒฝ์šฐ์—๋Š” fetch๋ฅผ ํ•˜๊ณ  pull์„ ํ•ด์˜ค๋ฉด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ตณ์ด ํ•ด๋‹น ๋ธŒ๋Ÿฐ์น˜๋ฅผ mregeํ•  ํ•„์š”๋Š” ์—†๋Š” ๊ฒƒ์ด๋‹ค.

+ ๋ณด๋„ˆ์Šค ์™„๋ฃŒ๋œ PR์„ ์ˆ˜์ •ํ•ด ๋ณด์ž

๋”๋ณด๊ธฐ

PR์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ PR์„ ํ•  testํŒŒ์ผ๊ณผ lecture์—์„œ PR_edit branch๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปค๋ฐ‹๊นŒ์ง€ ์ค€๋น„๋ฅผ ํ•œ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์ปค๋ฐ‹

์ด์ œ ์—ฌ๊ธฐ์„œ ๋ถ€ํ„ฐ commit์„ ์ถ”๊ฐ€ํ•ด์„œ ๋‹ค์‹œ push๋ฅผ ํ•  ๊ฒƒ์ด๋‹ค.

๋‘ ๋ฒˆ์งธ ์ปค๋ฐ‹

์ด์ œ ์—ฌ๊ธฐ์„œ ๋‘๋ฒˆ์˜ ์ปค๋ฐ‹์œผ๋กœ ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ PR์€ ์ปค๋ฐ‹์ด ๋‘๊ฐœ๊ฐ€ ์กด์žฌํ•˜๊ณ  ๊ทธ๋ ‡๊ฒŒ PR์„ ์ƒ์„ฑํ•œ๋‹ค. 

PR์ปค๋ฐ‹์ด ๋‘๊ฐœ์ธ๊ฒƒ์„ ํ™•์ธ

๊ธฐ์กด์— ํ•˜๋˜๋Œ€๋กœ PR์„ ์ž‘์„ฑํ•˜๊ณ  ์›๋ž˜๋Š” merge๊นŒ์ง€ํ•ด์„œ reset์„ ํ†ตํ•ด ์ˆ˜์ • ํ•ด๋ณด๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ์šฐ์„ ์€ ํ˜„์žฌ PR์ด Assigin์ด ๋˜๊ธฐ ์ „๊นŒ์ง€๋กœ ํ•ด๋ณด๊ฒ ๋‹ค.

์šฐ์„  ๋ณธ์ธ์€ reset์œผ๋กœ '์ฒซ ๋ฒˆ์งธ' commit๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€์„œ ํ•ด๋‹น branch๋ฅผ ๊ฐ•์ œ push --force๋ฅผ ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค. ํ˜„์žฌ branch๋Š” PR_edit branch์—ฌ์•ผ ํ•œ๋‹ค.

ํ˜„์žฌ branch๊ฐ€ '์ฒซ ๋ฒˆ์งธ' commit์œผ๋กœ ๋‚ด๋ ค์˜จ ๊ฒƒ์„ ํ™•์ธ ํ• ์ˆ˜ ์žˆ๋‹ค.

์ด์ œ ๊ฐ•์ œ๋กœ pushํ•ด์„œ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ PR์ด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์ž.

์„ฑ๊ณต์ ์œผ๋กœ PR์ด ์ˆ˜์ •๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐ˜๋Œ€๋กœ merge๋ฅผ ํ•œ์ƒํƒœ์—์„œ commit์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์„์ง€ ์‹คํ—˜ ํ•ด๋ณด๊ฒ ๋‹ค.

๋‹ค์‹œ ์›์ƒ๋ณต๊ตฌ๋ฅผ ํ•˜๊ณ  merge๋ฅผ ์‹คํ–‰ํ•ด๋ณด๊ฒ ๋‹ค.

๊ธฐ์กด์—๋Š” rebase merge๋ฅผ ํ–ˆ์ง€๋งŒ ์ด๋ฒˆ์—๋Š” Merge pull request๋ฅผ ํ•ด๋ณด๊ฒ ๋‹ค. (PR merge์—๋Š” ์„ธ๊ฐ€์ง€ mrege๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„๋‘์ž.)

์ด๋ ‡๊ฒŒ fetch์™€ pull์„ ํ•ด์„œ merge request๊ฐ€ ์™„๋ฃŒ๋œ ๋ชจ์Šต์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

merge๋ฅผ ์™„๋ฃŒํ•œ PR์ด ๊ณผ์—ฐ ํ’€๋ฆด์ง€ ๊ถ๊ธˆํ•œ ์ˆœ๊ฐ„์ด๋‹ค. ์šฐ์„  merge๋Š” lecture๋กœ ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ log๋ฅผ ํ™•์ธ ํ• ๋• branch๊ฐ€ lecture์ธ ์ƒํƒœ์—์„œ ํ™•์ธํ•ด์•ผํ•œ๋‹ค. lecture์˜ log ์ƒํƒœ๋ฅผ ํ™•์ธํ–ˆ์œผ๋‹ˆ ์ด์ œ reset์œผ๋กœ ํ’€์–ด๋ณด์ž.(์•ˆ์ „ํ•˜๊ฒŒ ํ•˜๊ธฐ์œ„ํ•ด์„œ๋Š” ํ˜„์žฌ ์œ„์น˜์—์„œ backup branch๋ฅผ ํ•˜๋‚˜ ๋‚จ๊ฒจ๋‘” ์ƒํƒœ์—์„œ ์ง„ํ–‰์„ ํ•ด์•ผํ•œ๋‹ค.)

ํ˜„์žฌ lecture branch์˜ merge๊ฐ€ ํ’€๋ ค ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.

์ด ์ƒํƒœ์—์„œ ๊ฐ•์ œ push๋ฅผ ์ง„ํ–‰ํ•ด ๋ณด๊ฒ ๋‹ค. (์›๋ž˜๋ผ๋ฉด ๊ฐ•์ œ push๋ฅผ ๊ตณ์ด ํ• ํ•„์š”๊ฐ€ ์—†์–ด ๋ณด์ด๊ธด ํ•˜๋‚˜ ๊ฒฝํ—˜์„ ์œ„ํ•ด ์ง„ํ–‰ํ•ด ๋ณด๊ฒ ๋‹ค.)

ํ˜„์žฌ ์ƒํƒœ๋กœ๋Š” merge๊ฐ€ ํ’€๋ ค์žˆ๋‹ค. ๊ณผ์—ฐ ์›๊ฒฉ ์ €์žฅ์†Œ๋Š” ์–ด๋–ป๊ฒŒ ๋˜์–ด ์žˆ์„๊นŒ?

merge๊ฐ€ ํ’€๋ ค ์žˆ์ง€ ์•Š๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์›๊ฒฉ ์ €์žฅ์†Œ๊ฐ€ ํ˜„์žฌ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์›๊ฒฉ ์ €์žฅ์†Œ๋Š” ๋™๊ธฐํ™”๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ ์—ฌ๊ธฐ์„œ ๊ฐ•์ œ๋กœ '์ฒซ ๋ฒˆ์งธ' ์ปค๋ฐ‹๊นŒ์ง€ ์ง„ํ–‰์„ ํ•˜๊ณ  ๊ฐ•์ œ push๋ฅผ ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? (ํ˜„์žฌ lecture๊ณผ PR_edit branch๋ฅผ ๋ชจ๋‘ '์ฒซ ๋ฒˆ์งธ' ์ปค๋ฐ‹์œผ๋กœ ์ด๋™ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ง€ํ•ด์•ผ ํ•œ๋‹ค.)

 ํ˜„์žฌ ๋ชจ๋“  ๋ธŒ๋žœ์น˜๋ฅผ ๋˜๋Œ๋ ค ๋†“์•˜๋‹ค. ์ด์ œ ๊ฐ•์ œ๋กœ push๋ฅผ ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ์ง€ ์‚ดํŽด๋ณด์ž.

PR์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด PR์„ ์ƒ์„ฑํ•ด๋‹ฌ๋ผ๊ณ ๋งŒ ํ•œ๋‹ค. ์ฆ‰ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ๋ชจ์–‘์œผ๋กœ ๊ทธ๋ ค์ง€์ง€ ์•Š์•˜๋‹ค. ํ•˜์ง€๋งŒ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ lecture์€ ์ •์ƒ์ ์œผ๋กœ ๋ณ€๊ฒฝ์ด ๋˜์—ˆ๋‹ค. ์ง€๊ธˆ์ด๋ผ๋„ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ revert๋ฅผ ์ด์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ์ง€ ์‚ดํŽด ๋ณด๊ฒ ๋‹ค. 

์ด๋Ÿฌํ•œ ๊ฒฝ๊ณ ์ฐฝ์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ณผ๊ฑฐ์˜ history ๋ชจ์–‘์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ๋‹ค์‹œ ๋งž์ถฐ์•ผํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์™œ reset์ด ์œ„ํ—˜ํ•œ์ง€ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์›๊ฒฉ ์ €์žฅ์†Œ์˜ revert๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•ด๋ณด์ž. ์•„๊นŒ์™€ ๊ฐ™์€ ์ƒํ™ฉ์„ ๋‹ค์‹œ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ๋‹ค.

์•„๊นŒ์™€ ๋‹ฌ๋ฆฌ push๋ฅผ ๋‘๋ฒˆ ํ•ด์•ผํ–ˆ์ง€๋งŒ ์ปค๋ฐ‹์„ ๋ฎ์–ด์”Œ์› ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฒˆ์—” ์ถ”๊ฐ€๋ฅผ ํ•ด๋ณด๊ฒ ๋‹ค.

์•„๊นŒ์™€ ๊ฐ™์€ ๋‘๋ฒˆ ์งธ PR์ด๋‹ค. ์ด์ œ ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ revert๋ฅผ ํ•ด๋ณด์ž.

๊ฒฐ๊ณผ๋Š” merge๊ฐ€ ๋‹ค์‹œ ์—ด๋ ธ๋‹ค. ์‚ฌ์‹ค PR์ด ์ƒˆ๋กœ ์—ด๋ ธ๋‹ค๊ธฐ๋ณด๋‹จ Revert PR์ด ์ƒ์„ฑ๋œ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ œ ์—ฌ๊ธฐ์„œ ๊ฐ•์ œ๋กœ '์„ธ ๋ฒˆ์งธ' commit์„ push๋ฅผ ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ์ง€ ํ™•์ธํ•ด ๋ณด์ž.

Revert branch๋ฅผ ์ด์šฉํ•ด์„œ ์—†๋ฐ์ดํŠธ ํ•ด์•ผํ•œ๋‹ค.

๊ฐ•์ œ๋กœ push๋ฅผ ํ–ˆ์„ ๋•Œ PR์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค ๊ทธ๋ž˜์„œ ์ปค๋ฐ‹์„ ํ•˜๊ณ  ํ†ต์ƒ์ ์ธ push๋ฅผ ํ–ˆ๋‹ค๋„ˆ Revert PR์— ์ถ”๊ฐ€๊ฐ€ ๋˜๊ณ  ์˜๋„์น˜ ์•Š๊ฒŒ PR์„ ์ถ”๊ฐ€ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. Revert PR์˜ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์ด ๋ฐฉ๋ฒ•์ด ์ตœ์„ ์ด ๋ ์ง€๋Š” ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค.

rebase๋ฅผ ํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ rebase merge ์ „๋žต์ด๋‹ค. Pr์€ ๋‹จ์ˆœํžˆ ๋ฌธ์„œํ™” ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.(rebase ๊ฐ•์˜ ์ฐธ๊ณ )


8๊ฐ•์˜ : revert๋กœ ์—ฌ๋Ÿฌ ์ปค๋ฐ‹ ๋˜๋Œ๋ฆฌ๊ธฐ

  • revert์˜ ํŠน์ง• : ์ปค๋ฐ‹์€ ์—†์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.
  • revert๋กœ ์—ฌ๋Ÿฌ ์ปค๋ฐ‹์„ ๋˜๋Œ๋ฆฌ๋ ค๋ฉด ์ตœ์‹ ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ revert ํ•˜์ž ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์ถฉ๋Œ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

9๊ฐ•์˜ : ๋ธŒ๋žœ์น˜์™€ ์Šคํƒœ์‹œ

  • git commit --amend : ์ปค๋ฐ‹ ๋ฎ์–ด์“ฐ๋Š” ๋ช…๋ น์–ด๋กœ sourceTree์—์„œ๋„ ์ด์ „ ์ปค๋ฐ‹ ๋ฎ์–ด์“ฐ๊ธฐ๊ฐ€ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค.
  • ์ด๋ฏธ push๋ฅผ ํ•œ ๊ฒฝ์šฐ push --force๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • git stash / git stash save : stash๋Š” ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ ์ฒดํฌ์•„์›ƒํ•˜๊ธฐ ์ „์— ํ˜„์žฌ ์ž‘์—…๋‚ด์šฉ์„ ์ €์žฅํ•˜๋Š” ์ž„์‹œ ์ €์žฅ์†Œ์ด๋‹ค.
  • sourceTree์—๋„ stash๊ฐ€ ์žˆ์œผ๋‹ˆ GUI๋ฅผ ํ™œ์šฉํ•ด์„œ ๋”์šฑ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

10๊ฐ•์˜ : rebase๋กœ ๋ณ‘ํ•ฉํ•˜๊ธฐ

  • merge์ฒ˜๋Ÿผ ๋‘ ๋ธŒ๋ Œ์น˜๋ฅผ ํ•ฉ์น  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ˜„์žฌ ๋ธŒ๋žœ์น˜๊ฐ€ ๋Œ€์ƒ ๋ธŒ๋žœ์น˜ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ„๋‹ค.
  • ์œ„ํ—˜๋„๊ฐ€ ์žˆ์œผ๋‹ˆ ์‹ ์ค‘ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ž.

* rebase ์‹ค์Šต

๋”๋ณด๊ธฐ

์›ํ•˜๋Š” branch๋กœ HEAD๋ฅผ ์˜ฎ๊ธด ์ƒํƒœ์—์„œ rebase๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋Š” ๊ณณ์„ ํ„ฐ๋ฏธ๋„์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.(study/1 -> lecture)

$ git rebase lecture

์œ„์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋„์ถœ ๋œ๋‹ค.


+๋ณด๋„ˆ์Šค sourceTree์—์„œ history๋ฅผ ๋ณด๋Š” ๋ฐฉ๋ฒ•

๋”๋ณด๊ธฐ

branch๊ฐ€ 3๊ฐœ(study/test/2,study/test/1,lecture)๋กœ ๊ฐ€์ง€๊ฐ€ ๋ป—์–ด์•ผ ํ•œ๋‹ค๊ณ  ์˜คํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ study/test/2์™€ lecture์ด ํŒŒ๋ž€์ƒ‰์œผ๋กœ ๋˜์–ด ์žˆ์–ด์„œ ์ด ๋‘˜์ด ๊ฐ™์€ tree ์„ ์ƒ์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ lecture์€ ์•„๋ฌด๋Ÿฐ ์ปค๋ฐ‹์ด ์—†๊ณ  ์ง„ํ–‰๋˜๋Š” ์‚ฌํ•ญ์ด study/test/2, study/test/1๋ณด๋‹ค ๋’ค์— ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ sourceTree๋Š” lecture์„ ์ œ์™ธํ•œ ๋‘๊ฐœ์˜ ์ปค๋ฐ‹๋งŒ์„ ๊ตฌ๋ฒผํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ study/test/1๊ณผ study/test/2์˜ branch๋งŒ ๋ฐ”๋ผ๋ณด๊ณ  ๊ฐ€์ž์˜ ๋ธŒ๋Ÿฐ์น˜๋กœ ๋ป—์–ด๋‚˜๊ฐ„ ๊ฒƒ ๋ฟ์ด๋‹ค. ๋” ๋‚˜์•„๊ฐ€์„œ ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ lecture์— branch๋ฅผ study/test/3๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ปค๋ฐ‹์„ ํ•˜๊ฒŒ ๋˜๋ฉด study/test/2๋ธŒ๋Ÿฐ์น˜๊ฐ€ study/test/1์ฒ˜๋Ÿผ ๊ฐ€์ง€๋ฅผ ์ƒˆ๋กœ ๋ป—์€ ํ˜•ํƒœ๋กœ ๋  ๊ฒƒ์ด๋‹ค. ๋ฌผ๋ก  lecutre๊ณผ study/test/3๋Š” ๊ฐ™์€ ์ƒ‰์ƒ์œผ๋กœ ์œ ์ง€๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

728x90

'๐Ÿ—‚๏ธGit > โšกver.0' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๐Ÿ”ธGit์œผ๋กœ ํ˜‘์—…๋Šฅ๋ ฅ ๊ธฐ์ดˆ ๋‹ค์ง€๊ธฐ  (0) 2024.02.08
Comments