[git] κΉƒν—ˆλΈŒλ‘œ ν•¨κ»˜ μ½”λ”©(ν˜‘μ—…)ν•˜κΈ° - (Forking Workflow방식)

2022. 1. 7. 03:58ㆍSystem μž‘μ—…μ‹€/ν˜‘μ—… κ΄€λ ¨

728x90
λ°˜μ‘ν˜•

πŸš€ Forking WorkFlow λ°©μ‹μ˜ ν˜‘μ—…

- λͺ¨λ“  ν”„λ‘œμ νŠΈ μ°Έμ—¬μžκ°€ κ°œμΈ 둜컬 μ €μž₯μ†Œμ™€ 곡개된 μžμ‹ μ˜ 원격 μ €μž₯μ†Œ(쀑앙 원격 μ €μž₯μ†Œλ₯Ό forkν•œ 것), 이 λ‘κ°œμ˜ μ €μž₯μ†Œλ₯Ό 가지고 ν˜‘μ—…μ„ μ§„ν–‰ν•˜λŠ” 방식인 κ²ƒμ΄μ—μš”.

- λͺ¨λ“  μ½”λ“œ κΈ°μ—¬μžκ°€ μ€‘μ•™ μ €μž₯μ†Œμ— ν‘Έμ‹œν•˜λŠ” 것이 μ•„λ‹ˆλΌ, κ°μž μžμ‹ μ˜ 원격 μ €μž₯μ†Œμ— ν‘Έμ‹œν•˜κ³  이 λ‚΄μš©μ„ μ€‘μ•™ 원격 μ €μž₯μ†Œμ— Pull Request ν•©λ‹ˆλ‹€! 그리고 ν”„λ‘œμ νŠΈ κ΄€λ¦¬μž(Owner)κ°€ λ‹€λ₯Έ κ°œλ°œμžλ“€μ˜ κΈ°μ—¬λΆ„(PR)을 쀑앙 원격 μ €μž₯μ†Œμ— λ³‘합할지 μ•ˆν• μ§€ κ²°μ •ν•˜λŠ” 것이 νŠΉμ§•μΈ κ²ƒμ΄μ—μš”.

- μ˜€ν”ˆμ†ŒμŠ€ ν”„λ‘œμ νŠΈμ— 많이 μ‚¬μš©ν•˜λŠ” 방식

 

 

쀑앙 원격 μ €μž₯μ†Œ, μžμ‹ μ˜ 원격 μ €μž₯μ†Œ, 둜컬 μ €μž₯μ†Œ κ°œλ…

- μ€‘μ•™ 원격 μ €μž₯μ†Œ : μ—¬λŸ¬ λͺ…이 같은 ν”„λ‘œμ νŠΈλ₯Ό κ΄€λ¦¬ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” κ·Έλ£Ή 계정(Organization)의 μ€‘λ¦½λœ 원격 μ €μž₯μ†Œ 

- μžμ‹ μ˜ 원격 μ €μž₯μ†Œ : remote repository, κΉƒν—ˆλΈŒμ˜ repository

- λ‘œμ»¬ μ €μž₯μ†Œ : local repository, λ‚΄ PC에 μ €μž₯λ˜λŠ” 개인 μ „μš© μ €μž₯μ†Œ

 

 

 

πŸš€  쀑앙 원격 μ €μž₯μ†Œλ₯Ό 포크(fork)ν•΄μ„œ μžμ‹ λ§Œμ˜ 원격 μ €μž₯μ†Œ μ œμž‘

- μ€‘μ•™ 원격 μ €μž₯μ†Œλ₯Ό λ‚˜μ˜ κΉƒν—ˆλΈŒ 계정 μ €μž₯μ†Œμ— λ³΅μ œν•œλ‹€λŠ” κ°œλ….

- μžμ‹ μ˜ κΉƒν—ˆλΈŒ 계정에 쀑앙 원격 μ €μž₯μ†Œμ™€ λ˜‘κ°™μ€ λ‚΄μš©μ˜ μ €μž₯μ†Œκ°€ λ³΅μ œλœλ‹€.

- 개인 곡개 μ €μž₯μ†Œλ‘œ μ €μž₯λ˜λ―€λ‘œ 쀑앙 원격 μ €μž₯μ†Œμ™€ λ…λ¦½μ μœΌλ‘œ μš΄μ˜λœλ‹€.

 

 

 

πŸš€  ν”„λ‘œμ νŠΈ μ°Έμ—¬μžλŠ” git clone λͺ…λ ΉμœΌλ‘œ 둜컬 μ €μž₯μ†Œ 생성

- git clone λͺ…λ ΉμœΌλ‘œ μžμ‹ μ˜ 원격 μ €μž₯μ†Œ(forkν•˜κ³  μ €μž₯μ†Œ μžμ‹ μ˜ 계정에 μƒμ„ λœ μ €μž₯μ†Œ)λ₯Ό λ‘œμ»¬ μ €μž₯μ†Œμ—λ‹€ λ³΅μ œν•΄μ•Ό ν•˜λŠ” κ²ƒμ΄μ—μš”. 이 뢀뢄은 λ”± ν•œλ²ˆλ§Œ ν•΄ μ£Όλ©΄ λœλ‹΅λ‹ˆλ‹€!

 

 

$ cd Desktop
$ git clone [μžμ‹ μ˜ 원격 μ €μž₯μ†Œ URL]

 

 

 

 

 

 

 

πŸš€ 원격 μ €μž₯μ†Œ μ—°κ²°ν•˜κΈ° (졜초 1회)

- κΉƒν—ˆλΈŒ μ €μž₯μ†Œμ— push ν•˜κ±°λ‚˜ pull ν• λ•Œ 맀번 urlλ₯Ό μž‘μ„±ν•˜κΈ° 번거둜운 κ²ƒμ΄μ—μš”.

- κ·Έλž˜μ„œ 각 url에 이름을 뢙여쀄 수 μžˆλŠ” κ²ƒμ΄μ—μš”.

- 이름은 μ•„λ¬΄λ ‡κ²Œλ‚˜ 뢙여도 λ˜μ§€λ§Œ, 일반적으둜 ν¬ν¬ν•œ μžμ‹ μ˜ 원격 μ €μž₯μ†ŒλŠ” origin(git clone ν•  λ•Œ μžλ™μœΌλ‘œ origin으둜 생성)

- ν”„λ‘œμ νŠΈ μ€‘μ•™ 원격 μ €μž₯μ†ŒλŠ” upstream으둜 μ΄λ¦„μœΌλ‘œ μ§“λŠ”κ²Œ 보톡인 κ²ƒμ΄μ—μš”.
   (이 뢀뢄은 μžλ™μœΌλ‘œ μƒμ„±λ˜μ§€ μ•Šμ•„ 직접 λͺ…λ Ήμ–΄λ₯Ό μž‘μ„±ν•΄μ„œ 지정 ν•„μš”)

 

$ git remote add upstream [쀑앙 원격 μ €μž₯μ†Œ url]

 

 

 

 

 

πŸš€  μžμ‹ μ΄ κ΅¬ν˜„ν•  κΈ°λŠ₯ μ΄λ¦„μœΌλ‘œ 브랜치λ₯Ό ν•˜λ‚˜ 생성, κ·Έ 브랜치둜 μ΄λ™ν•œ λ’€ ν”„λ‘œμ νŠΈ μž‘μ—…μ„ 진행

- μƒˆλ‘œμš΄ κΈ°λŠ₯ κ°œλ°œμ„ μœ„ν•΄, master λΈŒλžœμΉ˜μ™€ 격리된 μƒˆλ‘œμš΄ branchλ₯Ό λ§Œλ“€μ–΄μ•Όν•˜λŠ” κ²ƒμ΄μ—μš”.

- κ΅¬ν˜„ν•  κΈ°λŠ₯ μ΄λ¦„μœΌλ‘œ 브랜치 이름을 μ§“λŠ”λ‹€. (ex. map branch, weapon branch . . .)

- μƒˆλ‘œ λ§Œλ“  브랜치둜 μ΄λ™ν•œ λ’€ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  λ³€κ²½λ‚΄μš©μ„ μ»€λ°‹ν•˜λ©° ν”„λ‘œμ νŠΈλ₯Ό 진행해야 ν•˜λŠ” κ²ƒμ΄μ—μš”.

- μ£Όμ˜! λ°˜λ“œμ‹œ master λΈŒλžœμΉ˜μ—μ„œ 브랜치λ₯Ό 생성해야 ν•˜λŠ” κ²ƒμ΄μ—μš”!  

 

 

$ git checkout -b [branch name]

 

μœ„ λͺ…λ Ήμ–΄λŠ” μ•„λž˜μ˜ 두 λͺ…λ Ήμ–΄λ₯Ό ν•©ν•œ κ²ƒμ΄μ—μš”.

 

$ git branch [branch name] // μƒˆλ‘œμš΄ 브랜치 생성
$ git checkout [branch name] // ν•΄λ‹Ή ν”„λžœμΉ˜λ‘œ μž‘μ—… μœ„μΉ˜ 이동

 

 

 

 

 

 

 

πŸš€ 둜컬 μ €μž₯μ†Œμ—μ„œ μ»€λ°‹ν•œ 이λ ₯을 μžμ‹ μ˜ 원격 μ €μž₯μ†Œλ‘œ push

- κΈ°λŠ₯ κ΅¬ν˜„μ„ λ§ˆμΉœ ν›„ μ»€λ°‹ν•œ λ‚΄μš©μ„ ν‘Έμ‹œ ν•  λ•ŒλŠ” ν”„λ‘œμ νŠΈ 쀑앙 원격 μ €μž₯μ†Œκ°€ μ•„λ‹ˆλΌ, 볡제(clone)ν–ˆλ˜ μžμ‹ μ˜ 원격 μ €μž₯μ†Œλ‘œ ν‘Έμ‹œν•΄μ•Ό ν•˜λŠ” κ²ƒμ΄μ—μš”.

- ν‘Έμ‹œν•˜κ³  λ‚˜λ©΄ λ‚˜μ˜ 원격 μ €μž₯μ†Œμ—λ„ λ˜‘κ°™μ€ λΈŒλžœμΉ˜κ°€ μƒκΈ°λŠ” κ²ƒμ΄μ—μš”.

 

$ git add . // μžμ‹ μ΄ λ³€κ²½, μΆ”κ°€ν•œ λͺ¨λ“  νŒŒμΌμ„ μŠ€ν…Œμ΄μ§• μ˜μ—­(컀밋 μ€€λΉ„ μƒνƒœ)에 μΆ”κ°€,
$ git commit -m "컀밋 메세지" // add ν•œ νŒŒμΌλ“€μ„ μ»€λ°‹ν•œλ‹€. 
$ git push origin [branch name] // [branc name]에 ν•΄λ‹Ήν•˜λŠ” 브랜치λ₯Ό μžμ‹ μ˜ 원격 μ €μž₯μ†Œμ— push

 

λ°˜μ‘ν˜•

 

 

πŸš€  ν”„λ‘œμ νŠΈ κ΄€λ¦¬μžμ—κ²Œ μžμ‹ μ˜ 기여뢄을 λ°˜μ˜ν•΄ λ‹¬λΌλŠ” pull requestλ₯Ό λ˜μ§„λ‹€.

- λ‚΄κ°€ λ§Œλ“  κΈ°λŠ₯을 쀑앙 원격 μ €μž₯μ†Œμ— λ°˜μ˜ν•˜κΈ° μœ„ν•΄μ„ , ν”„λ‘œμ νŠΈ κ΄€λ¦¬μžμ—κ²Œ λ°˜μ˜ μš”μ²­(pull request)ν•΄μ•Ό ν•˜λŠ” κ²ƒμ΄μ—μš”.

- λ‚˜μ˜ 원격저μž₯μ†Œ κΉƒν—ˆλΈŒ νŽ˜μ΄μ§€μ—μ„œ κ΅¬ν˜„ν•œ κΈ°λŠ₯의 λΈŒλžœμΉ˜λ₯Ό 선택해 pull request λ²„νŠΌμ„ 눌러 μš”μ²­ν•˜λ©΄ λ˜λŠ” κ²ƒμ΄μ—μš”.

 

 

 

 

 

πŸš€  ν”„λ‘œμ νŠΈ κ΄€λ¦¬μžλŠ” λ³€κ²½ λ‚΄μš©μ„ ν™•μΈν•œ ν›„ 쀑앙 원격 μ½”λ“œ λ² μ΄μŠ€μ— 병합(merge)

- λͺ¨λ“  νŒ€μ›μ΄ λ³€κ²½ν•œ μ½”λ“œ λ‚΄μš©μ„ ν™•μΈν•˜κ³  ν”„λ‘œμ νŠΈ κ΄€λ¦¬μžλŠ” λ³‘ν•©(merge)λ₯Ό 진행해야 ν•˜λŠ” κ²ƒμ΄μ—μš”.

- 좩돌이 μΌμ–΄λ‚œ 경우 νŒ€μ›λ“€κ³Ό ν•©μ˜ ν›„ 좩돌 λ‚΄μš©μ„ μˆ˜μ •ν•œ ν›„ 병합을 μ§„ν–‰ν•˜λŠ” 것이 μ€‘μš”ν•œ κ²ƒμ΄μ—μš”.

- λ³‘합이 μ„±κ³΅ν•˜λ©΄ μ€‘μ•™ 원격 μ €μž₯μ†Œμ˜ master λΈŒλžœμΉ˜μ—λŠ” μƒˆλ‘œμš΄ λ‚΄μš©μ΄ κ°±μ‹ λ˜μ–΄μžˆλŠ” μƒνƒœκ°€ 될 κ²ƒμ΄μ—μš”.

- μ€‘μ•™ 원격 μ €μž₯μ†Œμ— map branchκ°€ μƒκΈ°λŠ” 것이 μ•„λ‹Œ, master λΈŒλžœμΉ˜μ— map branch λ‚΄μš©μ΄ κ°±μ‹ λ˜λŠ” κ²ƒμ΄μ—μš”.

 

 

 

 

 

 

πŸš€  쀑앙 원격 μ €μž₯μ†Œμ™€ μžμ‹ μ˜ 둜컬 μ €μž₯μ†Œλ₯Ό 동기화 ν•˜κΈ° μœ„ν•΄ μž‘μ—…μœ„μΉ˜λ₯Ό master branch둜 이동

- 쀑앙 μ½”λ“œ λ² μ΄μŠ€κ°€ λ³€κ²½λ˜μ—ˆμœΌλ―€λ‘œ, μžμ‹ μ˜ λ‘œμ»¬ μ €μž₯μ†Œλ₯Ό 동기화 ν•΄μ„œ μ΅œμ‹ μƒνƒœλ‘œ λ§Œλ“€μ–΄μ•Όν•˜λŠ” κ²ƒμ΄μ—μš”.

- μ΅œμ‹ μƒνƒœλ‘œ λ§Œλ“€κΈ° 이전에 둜컬 μ €μž₯μ†Œ μž‘μ—… μœ„μΉ˜λ₯Ό master 브랜치둜 μ΄λ™ν•΄μ•Όν•˜λŠ” κ²ƒμ΄μ—μš”.

- μ£Όμ˜! master 브랜치둜 이동 ν•œ ν›„ μƒˆλ‘œμš΄ λ‚΄μš©(쀑앙 원격 μ €μž₯μ†Œ λ³€κ²½ λ‚΄μš©)을 받아와야 ν•˜λŠ” κ²ƒμ΄μ—μš”.

 

$ git checkout master

 

 

 

 

 

 

πŸš€  쀑앙 원격 μ €μž₯μ†Œμ˜ μ½”λ“œ λ² μ΄μŠ€μ— μƒˆλ‘œμš΄ 컀밋이 μžˆλ‹€λ©΄ 둜컬 μ €μž₯μ†Œμ— κ°±μ‹ 

- 쀑앙 μ½”λ“œ λ² μ΄μŠ€κ°€ λ³€κ²½λ˜μ—ˆμœΌλ―€λ‘œ, λͺ¨λ“  ν”„λ‘œμ νŠΈ νŒ€μ›μ€ μžμ‹ μ˜ 둜컬 μ €μž₯μ†Œλ₯Ό 동기화 ν•΄μ„œ μ΅œμ‹ μƒνƒœλ‘œ λ§Œλ“€μ–΄μ•Όν•˜λŠ” κ²ƒμ΄μ—μš”.

- μ•„λž˜μ˜ λͺ…λ Ήμ–΄λ₯Ό μ΄μš©ν•΄ μ΅œμ‹  μƒνƒœλ‘œ 동기화 ν•΄μ•Ό ν•˜λŠ” κ²ƒμ΄μ—μš”.

- 주의 ν•˜μ„Έμš”! λ°˜λ“œμ‹œ master λΈŒλžœμΉ˜μ—μ„œ κ°±μ‹ ν•΄μ•Όν•˜λŠ” κ²ƒμ΄μ—μš”!

 

1
$ git pull upstream master
cs

 

 

 

 

 

πŸš€ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•˜κΈ° μœ„ν•΄ κ·Έ μž‘μ—…μ— λŒ€ν•œ branchλ₯Ό μƒμ„±ν•˜μ—¬ μž‘μ—…

- μ΅œμ‹ μƒνƒœλ‘œ λ™κΈ°ν™”λœ 둜컬 μ €μž₯μ†Œμ˜ master λΈŒλžœμΉ˜μ—μ„œ μƒˆλ‘œμš΄ μž‘μ—…μ— λŒ€ν•œ λΈŒλžœμΉ˜λ₯Ό μƒμ„±ν•˜μ—¬ λ˜ λ‹€λ₯Έ μž‘μ—…μ„ μ§„ν–‰ν•˜λ©΄ λ˜λŠ” κ²ƒμ΄μ—μš”.

 

 

 

 

 

μ£Όλ‹ˆν•˜λž‘μ΄ μž‘μ„±ν•œ λ‚΄μš©μ΄ 도움이 λ˜μ…¨μœΌλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€! ν˜Ήμ‹œλΌλ„ 잘 λͺ»λœ 정보가 μžˆλ‹€λ©΄ λŒ“κΈ€μ— μ†Œμ€‘ν•œ ν”Όλ“œλ°± 뢀탁 λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€!

 

728x90
λ°˜μ‘ν˜•