๐Ÿ™‹โ€โ™‚๏ธWelcome, Error

J.Nomaยท2021๋…„ 10์›” 5์ผ
0
post-thumbnail

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Git ์‚ฌ์šฉ ์ค‘ ๋งž๋‹ฅ๋œจ๋ฆฐ ์‹œํ–‰์ฐฉ์˜ค, ์—๋Ÿฌ๋“ค์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ํ•ด๊ฒฐ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

Q1.
reset์œผ๋กœ Local commit์€ ๋˜๋Œ๋ ธ๋Š”๋ฐ Local File์€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.
์–ด๋–ป๊ฒŒ ํ•ด์•ผ File๋„ ๊ณผ๊ฑฐ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋‚˜์š”?

โœ” Why?
reset์€ commit๋งŒ ๋˜๋Œ๋ฆฌ๊ณ  File์€ ๋˜๋Œ๋ฆฌ์ง€ ์•Š๊ธฐ์— ๋ฐœ์ƒํ•œ ์–ด๋ ค์›€์ž…๋‹ˆ๋‹ค

โœ” Solution
reset --hard๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Working Directory์˜ Local File๋„ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค
ํ˜น์€
restore๋ฅผ ๊ธฐ์กด Local File์„ ์ง€์šฐ๊ณ  ์‚ฌ์šฉํ•˜๋ฉด commit์— ๋งž๊ฒŒ ์ฝ”๋“œ๋ฅผ ์žฌ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค


Q2.
Local์—์„œ reset์„ ํ•˜๊ณ  Remote์— ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด push๋ฅผ ํ•˜๋ ค๋‹ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ๊ฐ€์š”?

โœ” Why?
Git commit์€ ์˜ค๋กœ์ง€ ์œ„๋กœ ์Œ“๋Š” ๊ฒƒ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค
๋ญ”๊ฐ€๋ฅผ ์ œ๊ฑฐํ•˜๋”๋ผ๋„ ์ œ๊ฑฐํ•˜๋Š” commit์„ ์Œ“์•„์•ผ ํ•˜์ฃ 
ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” reset์ด๋ผ๋Š” ์ปค๋งจ๋“œ๋กœ ๊ณผ๊ฑฐ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์Œ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
Push๊ฐ€ ์™œ ์•ˆ๋ ๊นŒ?๋ผ๋Š” ์˜๋ฌธ์€ ์ด reset์˜ ์šฉ๋„๋ฅผ ์ž˜๋ชป ์ดํ•ดํ•จ์—์„œ ๋น„๋กฏ๋ฉ๋‹ˆ๋‹ค

  • reset
    ๊ทธ๊ฐ„ ์Œ“์€ commit์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ์ปค๋งจ๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค
    ๊ณผ๊ฑฐ์˜ ํŠน์ •์‹œ์ ๋ถ€ํ„ฐ branch๋ฅผ ๋งŒ๋“ ๋‹ค๋˜์ง€ HEAD commit ๋ณ€๊ฒฝ์„ ์œ„ํ•ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค
    ๋ฌผ๋ก , reset์œผ๋กœ commit์„ ์ œ๊ฑฐํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด๋Š” ์›๋ž˜ ๋ชฉ์ ์ด ์•„๋‹™๋‹ˆ๋‹ค

โœ” Solution
Remote์˜ commit๋“ค์„ ๊ตณ์ด ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด
git push --force๋ฅผ ํ†ตํ•ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค


Q3.
๋™๋ฃŒ์™€ ์ž‘์—…์ค‘์ธ Repository๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ์ž ์ž‘์—… ์ค‘์— ๋™๋ฃŒ๊ฐ€ ๋งŒ๋“  branch๋ฅผ ์ €์˜ Local๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

โœ” Why?
์ผ๋ฐ˜์ ์œผ๋กœ clone์œผ๋กœ Repository๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด default๋กœ ์„ค์ •๋œ 1๊ฐœ์˜ branch๋งŒ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค
์ดํ›„ ๋‹ค๋ฅธ branch๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค๋ฅธ ๋ช…๋ น์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค
โœ” Solution
git checkout -t origin/<branch๋ช…> ๋ช…๋ น์–ด๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
์—ฌ๊ธฐ์„œ branch๋ช… ์•ž์— ๋ถ™์€ origin์€ Remote ์ €์žฅ์†Œ์˜ ๋ณ„๋ช…์ž…๋‹ˆ๋‹ค


Q4.
๊ณผ๊ฑฐ์˜ commit ์ •๋ณด (Author, ๋ฉ”์‹œ์ง€ ๋“ฑ)๋ฅผ ๋ฐ”๊พธ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

โœ” Why?
Git commit์€ ์˜ค๋กœ์ง€ ์œ„๋กœ ์Œ“๋Š” ๊ฒƒ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์ด๋ฏธ ํ˜๋Ÿฌ๊ฐ„ commit์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ๊ทน๊ตฌ ์ง€์–‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
โœ” Solution
๊ทธ๋Ÿผ์—๋„ ๊ผญ ํ•„์š”ํ•˜๋‹ค๋ฉด, rebase๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

  • git commit --amend
    ๊ฐ€์žฅ ์ตœ๊ทผ commit์€ ์ด ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํŽธ์•ˆํ•˜๊ฒŒ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค

  • git rebase -i <commitํ•ด์‹œ>
    ํ•˜์ง€๋งŒ, ๊ณผ๊ฑฐ์˜ commit์„ ๋ณ€๊ฒฝํ•˜๊ธฐ๋Š” ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค
    ์ฐธ๊ณ  : Rebase ๊ด€๋ จ ํฌ์ŠคํŒ…


Q5.
origin/HEAD๋Š” ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋‚˜์š”?
๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

โœ” What?
์šฐ์„  origin์€ Remote Repository๋ฅผ ๋œปํ•˜๋ฉฐ ์ผ์ข…์˜ ๋ณ„๋ช…์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
๊ทธ๋ฆฌ๊ณ  HEAD๋Š” ํ˜„์žฌ checkout๋œ branch์˜ ๋งˆ์ง€๋ง‰ commit์„ ๋œปํ•ฉ๋‹ˆ๋‹ค

Local์—์„  checkout์„ ์ž์ฃผ ์‚ฌ์šฉํ–ˆ๊ฒ ์ง€๋งŒ Remote์˜ ํ˜„์žฌ branch๋ฅผ ๋ณ€๊ฒฝํ•œ ๊ฒฝํ—˜์€ ์•„๋งˆ(?) ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค

์‚ฌ์‹ค ์˜๋ฏธ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
origin/HEAD๋ž€, ๋ง ๊ทธ๋Œ€๋กœ Remote๊ฐ€ ํ˜„์žฌ ์ž‘์—… ์ค‘์ธ branch์˜ ๋งˆ์ง€๋ง‰ commit์„ ๋œปํ•ฉ๋‹ˆ๋‹ค

ํ•˜์ง€๋งŒ, Remote๋Š” checkout์ด ์—†๊ธฐ์— Local๊ณผ๋Š” ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค

โœ” Solution
์ฒ˜์Œ์— Remote๋กœ๋ถ€ํ„ฐ clone์„ ๋ฐ›์œผ๋ฉด ํŠน์ • 1๊ฐœ branch๊ฐ€ Local๋กœ ๋ณต์‚ฌ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค

์ด๋•Œ Github์—์„œ default branch๋กœ ์ง€์ •๋œ branch๊ฐ€ clone๋˜๋Š”๋ฐ ์ด๊ฒƒ์ด ์ตœ์ดˆ์˜ origin/HEAD๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค

์ดํ›„ HEAD๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” branch๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

๋ญ”๊ฐ€ Remote์—์„œ default๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค๋˜์ง€ ์ž‘์—…์„ ํ•˜๊ณ  fetch๋ฅผ ํ•˜๋ฉด ๋˜์ง€ ์•Š์„๊นŒ?์‹ถ์ง€๋งŒ ์–ด์งธ์„œ์ธ์ง€ ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

checkout์ด ์—†๋Š” remote๋ฅผ ์œ„ํ•ด ๋ช…๋ น์–ด๊ฐ€ ๋”ฐ๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
-> git remote set-head origin <Remote branch๋ช…>


Q6.
fetch์™€ pull์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

โœ” ๊ณตํ†ต์ 
๋‘˜ ๋‹ค Remote์˜ ์ •๋ณด/์ฝ”๋“œ๋ฅผ Local๋กœ ๊ฐ€์ ธ์™€ updateํ•˜๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค

โœ” ์ฐจ์ด์ 
Local Commit/File์— ๋ณ‘ํ•ฉ์„ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค

fetch๋Š” Remote์˜ ๋ฉ”ํƒ€์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ํ•ฉ๋‹ˆ๋‹ค
Remote์— ๊ทธ๊ฐ„ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ์—ˆ๋Š”์ง€, ์ด๋กœ์ธํ•ด ๋ฏธ๋ž˜์— ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š”์ง€ ๋“ฑ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

pull์€ Remote์˜ ๋ฉ”ํƒ€์ •๋ณด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ commit์„ ๊ฐ€์ ธ์™€ ๋ณ‘ํ•ฉ์‹œํ‚ต๋‹ˆ๋‹ค

profile
๋…ธ์…˜์œผ๋กœ ์ด์‚ฌ๊ฐ‘๋‹ˆ๋‹ค https://tungsten-run-778.notion.site/Study-Archive-98e51c3793684d428070695d5722d1fe

0๊ฐœ์˜ ๋Œ“๊ธ€