🍎 Github μ‚¬μš©λ²• 2. 타인과 ν˜‘μ—…ν•˜κΈ° (git clone, pull)

μœ μ§„Β·2025λ…„ 5μ›” 20일

git

λͺ©λ‘ 보기
9/13

원격저μž₯μ†Œμ˜ μž₯점은 남듀과 ν˜‘μ—…ν•  수 μžˆλ‹€λŠ” 것이닀.

그게 μ–΄λ €μš΄ 게 μ•„λ‹ˆκ³  개발자 10λͺ…μ΄μ„œ 각각 μž‘μ—…ν•œ λ‚΄μš©μ„ 원격저μž₯μ†Œμ— 올리면 그게 ν˜‘μ—…μ΄λ‹ˆκΉŒ λ„€.

ν˜‘μ—…ν•΄λ΄…μ‹œλ‹€.

μ™ μ§€ 눈물이 λ‚˜λŠ” κ°•μ˜

git clone

μ•„λ¬΄νŠΌ κ·Έ νŒ€μ›μ΄ μ†ŒμŠ€ μ½”λ“œκ°€ μ—†κ±°λ‚˜ μƒˆλ‘œ ν•©λ₯˜ν•΄μ„œ 뭐가 λ­”μ§€ 잘 λͺ¨λ₯΄κ² λ‹€λ©΄, 원격 μ €μž₯μ†Œμ— 올라온 μ†ŒμŠ€μ½”λ“œλ₯Ό λ‹€μš΄λ°›μœΌλ©΄ λœλ‹€.

λŒ€ν‘œμ μœΌλ‘  κ·Έλƒ₯ μ €κ±Έ λˆŒλŸ¬μ„œ ZIP 파일둜 λ‹€μš΄λ°›μœΌλ©΄ λ˜λŠ”λ°

그것보닀 μ‰¬μš΄ 방법이 μžˆλ‹€.

그게 λ°”λ‘œ git clone이닀.

μ‹€μŠ΅

폴더λ₯Ό ν•˜λ‚˜ λ§Œλ“€μ–΄ νŒ€μ›μ˜ 둜컬 μ €μž₯μ†ŒλΌκ³  가정해보겠닀.

아무것도 μ—†λŠ” ν……λΉˆ 폴더닀. 이제 νŒ€μ› 폴더λ₯Ό vs code둜 μ—΄κ³  ν„°λ―Έλ„μ—μ„œ git clone을 ν•΄λ³΄μž.

init도 μž…λ ₯ν•  ν•„μš” 없이 κ·Έλƒ₯ μž…λ ₯ν•˜λ©΄

μ΄λ ‡κ²Œ 원격 μ €μž₯μ†Œμ— 있던 λ‚΄ 파일이 νŒ€μ› 둜컬 μ €μž₯μ†Œμ— λ“€μ–΄μ˜¨λ‹€.

이제 이 νŒ€μ›λ„ μ—¬κΈ°μ„œ μ§œμ„œ git pushν•˜λ©΄ λœλ‹€.

λ¬Όλ‘  μ•„λ¬΄λ‚˜ 이게 λ˜λŠ” 건 μ•„λ‹ˆκ³ , κ·Έ 전에 μ„ΈνŒ…μ΄ ν•˜λ‚˜ ν•„μš”ν•˜λ‹€.

μ΄λ ‡κ²Œ μ„ΈνŒ…μ— collaborators에 κ·Έ νŒ€μ›μ˜ github 아이디λ₯Ό 등둝을 해놔야 git pushκ°€ μ •μƒμ μœΌλ‘œ λ™μž‘ν•œλ‹€.

원격 μ €μž₯μ†Œμ— λ¨Όμ € 파일이 좔가됐닀면

μ •μƒμ μœΌλ‘œ 계속 git pushκ°€ 되면 μ’‹κ² μ§€λ§Œ ν˜„μ‹€μ€ κ·Έλ ‡μ§€ μ•Šλ‹€.

κ°‘μžκΈ° λ‹€λ₯Έ νŒ€μ›μ΄ λ§Œλ“  파일이 원격저μž₯μ†Œμ— 뢈μ‘₯ 생기면 git pushλ₯Ό λ§ˆμŒλŒ€λ‘œ ν•˜μ§€ λͺ»ν•œλ‹€.

예λ₯Ό λ“€μ–΄ μ§€κΈˆ 원격 μ €μž₯μ†Œμ— 아무 νŒŒμΌμ΄λ‚˜ λ§Œλ“€κ³  commitν•΄λ³΄μž..

λ‚œ μ—¬κΈ°μ„œ bλΌλŠ” νŒŒμΌμ„ λŒ€μΆ© λ§Œλ“€μ–΄λ³΄κ² λ‹€.

이λ₯Ό commitν•΄λ³΄μž.

이제 νŒ€μ›μ΄ cλΌλŠ” νŒŒμΌμ„ λ§Œλ“€μ–΄μ„œ 이λ₯Ό commitν•˜κ³  git pushλ₯Ό ν•œλ‹€κ³  가정해보면

cλ₯Ό νž˜λ“€κ²Œ λ§Œλ“€μ—ˆλŠ”λ°, μ—λŸ¬κ°€ λ‚˜μ„œ pushν•˜μ§€ λͺ»ν•˜λŠ” 상황이 λ°œμƒν•œλ‹€.

이렇듯 남이 λ¨Όμ € git pushλ₯Ό 해버리면 λ‚΄ 둜컬과 원격 μ €μž₯μ†Œ 파일 κ°„μ˜ 차이가 λ°œμƒν•΄μ„œ μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.

git pull

이럴 λ•Œ git pull을 μ‚¬μš©ν•˜λ©΄ λœλ‹€.

git pull 원격저μž₯μ†Œμ£Όμ†Œ

git pull이 뭐냐면, 원격저μž₯μ†Œμ— 있던 λͺ¨λ“  브랜치 λ‚΄μš©μ„ κ°€μ Έμ™€μ„œ λ‘œμ»¬μ €μž₯μ†Œμ— ν•©μΉ˜λΌλŠ” λœ»μ΄λ‹€.

이제 이λ₯Ό ν†΅ν•΄μ„œ νŒ€μ› 폴더에 고립된 λΈŒλžœμΉ˜μ— μ΅œμ‹  λ‚΄μš©μ„ μΆ”κ°€ν•΄λ³΄μž.

μ•žμ„œ git pushλ₯Ό ν•  λ•Œ -uλ₯Ό 잘 μž…λ ₯ν–ˆλ‹€λ©΄, git pull만 μž…λ ₯해도 λœλ‹€.

μ•„λ¬΄νŠΌ μ΄λ ‡κ²Œ 원격 μ €μž₯μ†Œμ— μΆ”κ°€λ˜μ—ˆλ˜ bνŒŒμΌλ„ 잘 λ“€μ–΄μ™€μžˆμŒμ„ 확인할 수 μžˆλ‹€.

이처럼 둜컬 μ €μž₯μ†Œλ„ μ΅œμ‹ μ˜ μƒνƒœλ₯Ό μœ μ§€ν•΄μ•Ό git pushκ°€ κ°€λŠ₯ν•˜λ‹€.

이제 git pushλ₯Ό 진행해보면,

μ΄λ ‡κ²Œ 잘 λ™μž‘ν•˜κ³ 

원격 μ €μž₯μ†Œμ—λ„ 잘 μ˜¬λΌκ°€ μžˆμŒμ„ 확인할 수 μžˆλ‹€.

μΆ”κ°€λ‘œ

  • git pullν•  λ•Œ 브랜치 λͺ…도 λͺ…μ‹œκ°€ κ°€λŠ₯ν•˜λ‹€.
  • git pull은 μ—„λ°€νžˆ λ§ν•˜λ©΄ git fetch + git mergeμž„.(git fetchλŠ” 원격 μ €μž₯μ†Œ μ‹ κ·œ commit κ°€μ Έμ˜΄, git mergeλŠ” λ‚΄ λΈŒλžœμΉ˜μ— merge)
  • κ·Έλž˜μ„œ 가끔 comflict λ°œμƒν•¨. (이땐 전에 배운 κ²ƒμ²˜λŸΌ μ•Œμ•„μ„œ μˆ˜μ •ν•˜κ³  comflict ν•΄κ²°)

ν•œ 쀄 μš”μ•½

git pushν•˜κΈ° 전에 git pullλ¨Όμ € ν•˜μ‹­μ‡Ό.

0개의 λŒ“κΈ€