πŸ‘Ύ git μ™„λ²½ 정볡 - remote μ €μž₯μ†Œ

2021λ…„ 5μ›” 9일

λ“€μ–΄κ°€λ©°

λ‹€λ₯Έ μ‚¬λžŒλ“€κ³Ό git을 μ‚¬μš©ν•΄μ„œ 성곡적인 ν˜‘μ—…μ„ ν•˜λ €λ©΄ remote μ €μž₯μ†Œλ₯Ό 관리할 쀄 μ•Œμ•„μ•Ό ν•©λ‹ˆλ‹€.

μ—¬κΈ°μ„œ λ§ν•˜λŠ” remote μ €μž₯μ†Œλž€ μΈν„°λ„·μ΄λ‚˜ λ„€νŠΈμ›Œν¬ μ–΄λ”˜κ°€μ— μžˆλŠ” μ €μž₯μ†Œλ₯Ό λ§ν•©λ‹ˆλ‹€. μ–΄λ–€ μ €μž₯μ†ŒλŠ” 읽기만 κ°€λŠ₯ ν•  수 있고, μ–΄λ–€ μ €μž₯μ†ŒλŠ” 읽기와 μ“°κΈ°κ°€ λͺ¨λ‘ κ°€λŠ₯ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이번 ν¬μŠ€νŒ…μ—λŠ” μ΄λŸ¬ν•œ remote μ €μž₯μ†Œλ₯Ό κ΄€λ¦¬ν•˜λŠ” 방법에 λŒ€ν•΄ κ³΅λΆ€ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€!

리λͺ¨νŠΈ μ €μž₯μ†Œ

리λͺ¨νŠΈ μ €μž₯μ†Œ ν™•μΈν•˜κΈ°

git remote λͺ…λ ΉμœΌλ‘œ ν˜„μž¬ ν”„λ‘œμ νŠΈμ— λ“±λ‘λœ remote μ €μž₯μ†Œλ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ €μž₯μ†Œλ₯Ό 처음 clone ν•˜λ©΄ origin μ΄λΌλŠ” remote μ €μž₯μ†Œκ°€ μžλ™μœΌλ‘œ λ“±λ‘λ˜κΈ° λ•Œλ¬Έμ— originμ΄λΌλŠ” 이름을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

git_remote

-v μ˜΅μ…˜μ„ μ£Όμ–΄ 이름과 URL을 ν•¨κ»˜ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

git_remote_v

리λͺ¨νŠΈ μ €μž₯μ†Œ μΆ”κ°€ν•˜κΈ°

μƒˆ remote μ €μž₯μ†ŒλŠ” μ‰½κ²Œ μΆ”κ°€ ν•˜μ‹€ 수 μžˆλŠ”λ°, μ•„λž˜μ˜ λͺ…λ Ήμ–΄λ‘œ κ°€λŠ₯ν•©λ‹ˆλ‹€.

$ git remote add [이름] [url]

git_remote_add

이제 URL λŒ€μ‹  lakeλΌλŠ” μ΄λ¦„μœΌλ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ 둜컬 μ €μž₯μ†Œμ—λŠ” μ—†λŠ” lake branchλ₯Ό κ°€μ Έμ˜€λ €λ©΄ μ•„λž˜μ˜ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€.

$ git fetch lake

git_fetch

remote μ €μž₯μ†Œ Pull, Fetch

remote μ €μž₯μ†Œμ—μ„œ μƒˆλ‘œμš΄ branchλ₯Ό κ°€μ Έμ˜€λ €λ©΄ fetch λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€.

이 λͺ…령은 localμ—λŠ” μ—†μ§€λ§Œ remote μ €μž₯μ†Œμ— μžˆλŠ” λͺ¨λ“  데이터λ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€.

μ €μž₯μ†Œλ₯Ό Clone ν•˜λ©΄ λͺ…령은 μžλ™μœΌλ‘œ remote μ €μž₯μ†Œλ₯Ό origin μ΄λΌλŠ” μ΄λ¦„μœΌλ‘œ μΆ”κ°€λ©λ‹ˆλ‹€.

κ·Έλž˜μ„œ λ‚˜μ€‘μ— git fetch origin을 μ‹€ν–‰ν•˜λ©΄ Cloneν•œ 이후에 μˆ˜μ •ν•œ λͺ¨λ“  것을 κ°€μ Έμ˜΅λ‹ˆλ‹€.

git fetch λͺ…령은 리λͺ¨νŠΈ μ €μž₯μ†Œμ˜ 데이터λ₯Ό λͺ¨λ‘ 둜컬둜 κ°€μ Έμ˜€μ§€λ§Œ, μžλ™μœΌλ‘œ Mergeν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ λ‘œμ»¬μ—μ„œ μž‘μ—…ν•˜λ˜ 것은 직접 Mergeν•΄μ•Ό ν•©λ‹ˆλ‹€.

κ·Έλž˜μ„œ git pull λͺ…λ ΉμœΌλ‘œ remote μ €μž₯μ†Œ branchμ—μ„œ 데이터λ₯Ό κ°€μ Έμ˜¬ 뿐 μ•„λ‹ˆλΌ μžλ™μœΌλ‘œ local branch와 Merge μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

정리 ν•˜μžλ©΄,,

  • git clone λͺ…령은 μžλ™μœΌλ‘œ local의 master branchκ°€ remote μ €μž₯μ†Œμ˜ master branchλ₯Ό μΆ”μ ν•˜κ²Œ ν•©λ‹ˆλ‹€.
  • git pull λͺ…령은 cloneν•œ μ„œλ²„μ˜ 데이터λ₯Ό κ°€μ Έμ˜€κ³  κ·Έ 데이터λ₯Ό μžλ™μœΌλ‘œ ν˜„μž¬ μž‘μ—…ν•˜λŠ” μ½”λ“œμ™€ Merge μ‹œν‚΅λ‹ˆλ‹€.

remote μ €μž₯μ†Œμ— Push ν•˜κΈ°

ν”„λ‘œμ νŠΈλ₯Ό κ³΅μœ ν•˜κ³  싢을 λ•Œ Upstream μ €μž₯μ†Œμ— Push ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

$ git push [remote 이름] [branch 이름]

mater 브랜치λ₯Ό origin μ„œλ²„μ— push ν•˜λ €λ©΄ μ•„λž˜μ™€ 같이 λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

$ git push origin master

μœ„ λͺ…령은 cloneν•œ remote μ €μž₯μ†Œμ— μ“°κΈ° κΆŒν•œμ΄ 있고, cloneν•˜κ³  λ‚œ 이후 아무도 Upstream μ €μž₯μ†Œμ— Push ν•˜μ§€ μ•Šμ•˜μ„ λ•Œλ§Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μ‹œ 말해, clone ν•œ μ‚¬λžŒμ΄ μ—¬λŸ¬ λͺ…이고 λ‹€λ₯Έ μ‚¬λžŒμ΄ push ν–ˆμ„ 경우, 좩돌이 λ°œμƒν•©λ‹ˆλ‹€.

κ·Έλž˜μ„œ λ¨Όμ € λ‹€λ₯Έ μ‚¬λžŒμ΄ μž‘μ—…ν•œ 것을 local둜 가져와 Mergeν•œ 이후에 push ν•΄μ•Όν•©λ‹ˆλ‹€.