โš™๏ธ ๊ธฐํƒ€ ๊ฐœ๋ฐœ ์ž๋ฃŒ

[Git] git fetch์™€ git pull์˜ ์ดํ•ด

์†Œ์˜ ๐Ÿ€ 2025. 2. 12. 16:02

 

๐Ÿ”Ž ์ฃผ์ œ

git fetch์™€ git pull์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜๊ณ , ๊ฐ๊ฐ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•œ ์ƒํ™ฉ์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋‘˜ ๋‹ค ์›๊ฒฉ์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ..? ์ •ํ™•ํžˆ๋Š” ์ž˜ ๋ชจ๋ฅด๊ณ  ๋ฌด์กฐ๊ฑด pull์„ ์ผ๋˜ ๊ณผ๊ฑฐ... ์˜ค๋Š˜์€ pull๊ณผ fetch์˜ ์ฐจ์ด๋ฅผ ๋‹ค๋ฃฌ๋‹ค.

โœ… git pull

git pull์€ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ณด๋‹ค ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ๋” ์ตœ์‹  ์ปค๋ฐ‹์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ, ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋‚ด์šฉ์„ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋ฐ˜์˜ํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

pull='์žก์•„๋‹น๊ธฐ๋‹ค'๋กœ ์›๊ฒฉ์˜ ๋‚ด์šฉ์„ ๋กœ์ปฌ๋กœ ์žก์•„๋‹น๊ธด๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
๋™๋ฃŒ ๊ฐœ๋ฐœ์ž์™€ ํ˜‘์—…์„ ํ•˜๋ฉฐ ์ฝ”๋“œ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ์ผ ์ค‘ ๋ฐ›๋Š”์ผ์— ํ•ด๋‹นํ•œ๋‹ค.

์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์€
์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ํ˜„์žฌ ๋ธŒ๋žœ์น˜๋ฅผ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ํ˜„์žฌ ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉ(merge)ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿ–๏ธ push ์ „์— pull์„ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ

๋‚ด๊ฐ€ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋‚ด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋™์•ˆ
๋™๋ฃŒ๊ฐ€ ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ ธ๋‹ค๋ฉด, git push๋ฅผ ํ•  ์ˆ˜ ์—†๋‹ค.

์ด๋ฏธ ๋™๋ฃŒ๊ฐ€ ์ถ”๊ฐ€ํ•œ ๋‚ด์šฉ์ด ์žˆ๋Š”๋ฐ ๋‚ด ์ฝ”๋“œ๋ฅผ pushํ•˜๋ฉด
๋™๋ฃŒ์˜ ๋‚ด์šฉ์€ ๋ฎ์–ด์”Œ์›Œ์ ธ ์‚ฌ๋ผ์งˆ ๊ฒƒ์ด๋‹ค.
๊ทธ๋ž˜์„œ ์ด ๊ฒฝ์šฐ์—๋Š” git push๋ฅผ ์‹œ๋„ํ•ด๋„ ์‹คํŒจํ•œ๋‹ค.
์ด๋•Œ๋Š” push ์ „์— git pull์„ ํ•˜์—ฌ ๋™๋ฃŒ์˜ ์ˆ˜์ • ๋‚ด์šฉ์„ ๋‚ด ๋กœ์ปฌ์— ๋ฐ˜์˜ํ•˜์ž.
pull์€ merge์™€ ๊ฐ™์œผ๋ฏ€๋กœ, Merge Conflict๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•ด๊ฒฐํ•˜์—ฌ pull์„ ๋งˆ๋ฌด๋ฆฌํ•œ๋‹ค.

๊ทธ ์ดํ›„ pushํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

โœ… git fetch

pull์€ ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ์ˆ˜์ •์‚ฌํ•ญ์„ ๊ฐ€์ ธ์™€์„œ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ๋ธŒ๋žœ์น˜์— merge๋ฅผ ํ•œ๋‹ค๋ฉด,
git fetch๋Š” ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ํ•˜๊ณ , mergeํ•˜์ง€ ์•Š๋Š”๋‹ค.

์™œ ์•Œ์•„์„œ merge๊นŒ์ง€ ํ•ด์ฃผ๋Š” git pull์„ ์“ฐ์ง€ ์•Š๊ณ  git fetch๋ฅผ ์จ์•ผํ• ๊นŒ?

git fetch๋Š” ์ผ๋‹จ ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ธŒ๋žœ์น˜์— ๋‚ด์šฉ์„ ๊ฐ€์ ธ์™€์„œ ์‚ดํŽด๋ณธ ํ›„์— mergeํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

๋งŒ์•ฝ ์›๊ฒฉ์— ์žˆ๋Š” ๋‚ด์šฉ์ด ์ด์ƒํ•œ, ํ•„์š” ์—†๋Š” ๋‚ด์šฉ์ผ ์ˆ˜๋„ ์žˆ๋‹ค. ํ˜‘์—…ํ•  ๋•Œ ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์ผ์ด๋‹ค. (์‹ ์ž… ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์ˆ˜๋‹ค..)
๊ทธ๋Ÿด ๋•Œ๋Š” git pull์ด ๋ณ‘ํ•ฉ์„ ํ•˜๊ธฐ ์ „์— ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค.

 

fetch๋กœ ๊ฐ€์ ธ์˜จ ํ›„ git diff ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ๋ธŒ๋žœ์น˜์™€ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ๋ธŒ๋žœ์น˜์˜ ์ฐจ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ˜„์žฌ ๋กœ์ปฌ์—๋Š” local.md ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์ปค๋ฐ‹ํ•œ ์ƒํƒœ๊ณ , ์›๊ฒฉ์—์„œ๋Š” remote.md ํŒŒ์ผ์ด ์žˆ๋‹ค.

 

์ด๋•Œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€

  1. ๋™๋ฃŒ์—๊ฒŒ ์ฐพ์•„๊ฐ€ ์ˆ˜์ • ํ›„ ๋‹ค์‹œ ์›๊ฒฉ์— pushํ•˜๋ผ๊ณ  ํ•˜๊ธฐ
  2. ๋‚ด๊ฐ€ ์•Œ์•„์„œ ํ•ด๊ฒฐํ•˜๊ณ  ์›๊ฒฉ์— pushํ•˜๊ธฐ

๐Ÿ”‘ ์ฐจ์ด์  ์š”์•ฝ

git pull

  1. ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ์ˆ˜์ • ์‚ฌํ•ญ ์ •๋ณด๋ฅผ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ๋ณ‘ํ•ฉํ•œ๋‹ค.
  2. ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ์ตœ์‹  ์ปค๋ฐ‹์„ ๊ฒ€ํ† ํ•˜์ง€ ์•Š๊ณ  ๋กœ์ปฌ์— ๋ฐ˜์˜ํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

git fetch

  1. ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ์ˆ˜์ • ์‚ฌํ•ญ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ํ•œ๋‹ค.
  2. ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜จ ๋ธŒ๋žœ์น˜์˜ ๋‚ด์šฉ์„ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ(merge)ํ•˜๊ธฐ ์ „์— ์ ๊ฒ€์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  3. ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ธŒ๋žœ์น˜์˜ ๋‚ด์šฉ๊ณผ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋น„๊ตํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
๋ฐ˜์‘ํ˜•