h e 1 1 o !

κΉƒν—™ 이슈, λ§ˆμΌμŠ€ν†€, κΉƒν”Œλ‘œμš° λ³Έλ¬Έ

p r o j e c t

κΉƒν—™ 이슈, λ§ˆμΌμŠ€ν†€, κΉƒν”Œλ‘œμš°

hee.hee 2022. 8. 22. 15:54

 

πŸ“‚ μ΄μŠˆμ™€ λ§ˆμΌμŠ€ν†€


μ΄μŠˆλŠ” 말 κ·ΈλŒ€λ‘œ μ²˜λ¦¬ν•΄μ•Όν•˜λŠ” 일듀.

κ³΅ν†΅μ˜ 성격을 κ°€μ§„ μ΄μŠˆλ“€μ„ ν•˜λ‚˜μ˜ λͺ©ν‘œ, 달성 κΈ°μ€€μ μœΌλ‘œ 묢은 것을 λ§ˆμΌμŠ€ν†€μ΄λΌκ³  μƒκ°ν•˜λ©΄ λœλ‹€.

 

 

 

 

πŸ“‚ μ μš©ν•˜κΈ°


μ—°μŠ΅ν•˜κΈ° μœ„ν•΄μ„œ 'κ°œλ°œν™˜κ²½ μ„ΈνŒ…ν•˜κΈ°'λΌλŠ” 마일 μŠ€ν†€ ν•˜λ‚˜μ™€,

μ•„λž˜μ˜ νˆ¬λ‘, 진행쀑에 μžˆλŠ” 두 개의 이슈λ₯Ό μ„€μ •ν–ˆλ‹€.

μ•„λž˜λŠ” ν”„λ‘œμ νŠΈμ—μ„œ λ³Ό 수 μžˆλŠ” 화면이닀.

 

이슈λ₯Ό 생성할 λ•Œ λ§ˆμΌμŠ€ν†€μ„ μ§€μ •ν•  수 μžˆλ‹€.

μ €μ–΄κΈ° μ΄μ •ν‘œ μ•„μ΄μ½˜κ³Ό μžˆλŠ” 게 λ§ˆμΌμŠ€ν†€.

 

 

 

 

ν‘Έμ‹œ-ν’€λ¦¬ν€˜μŠ€νŠΈ 날리며 ν”„λ‘œμ νŠΈμ™€ λ§ˆμΌμŠ€ν†€, 이슈λ₯Ό μ„€μ •ν•΄μ€¬λ”λ‹ˆ, μ €λ ‡κ²Œ μ•Œμ•„μ„œ μ΄ˆλ‘μƒ‰μœΌλ‘œ 꽉 μ°¨κ³  λ§ˆμΌμŠ€ν†€μ΄ λ‹€ 달성 됐닀.

 

 

 

 

πŸ“‚ Git Flow


ν‘Έμ‹œ, ν’€λ¦¬ν€˜μŠ€νŠΈ, λ¨Έμ§€ ν–ˆμœΌλ©΄ 항상 λ‘œμ»¬λ©”μΈμ˜ main에도 λ°˜μ˜μ„ ν•΄μ„œ 같은 λ²„μ „μœΌλ‘œ λ”°λΌκ°€κ²Œ ν•΄μ£Όκ³  μžˆλ‹€.

(ν•˜μ§€λ§Œ, μ•„μ˜ˆ λ‹€λ₯Έ 버전을 λ§Œλ“€μ–΄ λ”°λ‘œ κ΄€λ¦¬ν•œλ‹€λ©΄ 그럴 ν•„μš” μ—†λ‹€.)

κ·Έλž˜μ„œ λ‚˜λŠ” 둜컬 main에도 git pull둜 ν˜„μž¬ λ¨Έμ§€λœ μƒνƒœλ₯Ό λŒ•κ²¨μ™”λ‹€.

그럼 둜컬, 리λͺ¨νŠΈμ˜ λͺ¨λ“  λΈŒλžœμΉ˜κ°€ λ‹€ 같은 μƒνƒœ!

 

 

Piggy νŒ€ν”Œμ„ ν•˜λŠ” λ™μ•ˆ 우리 νŒ€μ›λ“€μ€ master와 각자 μž‘μ—…ν•˜λŠ” 브랜치둜 λ‚˜λˆ„μ–΄μ„œ μž‘μ—…μ„ ν–ˆλ‹€.

μš”λ ‡κ²Œ μ½”λ“œ 관리λ₯Ό μœ„ν•΄ 브랜치 μ’…λ₯˜λ₯Ό λ‚˜λˆ μ„œ κ΄€λ¦¬ν•˜λŠ” κ±Έ Git Flow라고 ν•œλ‹€.

μ½”λ“œμŠ€ν…Œμ΄μΈ λŠ” μ—¬λŸ¬ μ’…λ₯˜μ˜ κΉƒ ν”Œλ‘œμš° μ€‘μ—μ„œλ„ Git flowλ₯Ό λ‹¨μˆœν™”ν•œ Coz’ Git flowλ₯Ό μ œμ•ˆν•œλ‹€.

 

 

 

πŸ“Œ Coz’ Git flow


μ½”λ“œμŠ€ν…Œμ΄μΈ 

μ£Όμš” 브랜치 main, dev λ‘κ°œ + μž‘μ—… 브랜치둜 이루어져 μžˆλ‹€.

 

 

main 브랜치

μ‚¬μš©μžμ—κ²Œ μ–Έμ œλ“  μ œν’ˆμœΌλ‘œ μΆœμ‹œν•  수 μžˆλŠ” 브랜치

νšŒμ‚¬μ— λ”°λΌμ„œ master, prod, productionλ“± λ‹€μ–‘ν•˜κ²Œ λΆˆλ¦½λ‹ˆλ‹€.

“μ–Έμ œλ“  배포할 수 μžˆλ‹€"의 μ˜λ―ΈλŠ” νšŒμ‚¬ λ³„λ‘œ, νŒ€ λ³„λ‘œ λ‹€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€λ§Œ, μ΅œμ†Œν•œμ˜ 기쀀을 μ„Έμ›Œλ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

  • λŒ€ν‘œμ μΈ κΈ°λŠ₯이 μ™„μ„±λ˜μ—ˆλ‹€.
  • κΈ°μ‘΄ κΈ°νšν–ˆλ˜ λ ˆμ΄μ•„μ›ƒμ΄λ‚˜ 전체적인 λ””μžμΈμ΄ μ–ΌμΆ” μ™„μ„±λ˜μ—ˆλ‹€.
  • ν΄λΌμ΄μ–ΈνŠΈ, μ„œλ²„, λ°μ΄ν„°λ² μ΄μŠ€κ°€ 곡개된 μ›Ήμ—μ„œ μ •μƒμ μœΌλ‘œ 톡신할 수 μžˆλ‹€.
  • μ΅œμ†Œν•œμ˜ λ³΄μ•ˆμ΄ λ§ˆλ ¨λ˜μ—ˆλ‹€.
    • λΈŒλΌμš°μ €μ—μ„œ 개발 λ²„μ „μ—μ„œ μ‚¬μš©ν•˜λ˜ secretμ΄λ‚˜ μœ μ €μ˜ λΉ„λ°€λ²ˆν˜Έκ°€ λ…ΈμΆœλ˜λŠ”κ°€?
    • μœ μ €μ˜ κΈ°λ°€ 정보 쑰회λ₯Ό μœ„ν•΄ 인증 토큰, μ„Έμ…˜μ΄ κΌ­ ν•„μš”ν•œκ°€?

μ΄λ ‡κ²Œ 일정 기쀀을 μΆ©μ‘±ν–ˆκ³ , 핡심 κΈ°λŠ₯이 μ™„μ„±λ˜μ—ˆμœΌλ©΄ main 브랜치둜 배포λ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

dev 브랜치

λ‹€μŒ 버전 배포λ₯Ό μœ„ν•œ "개발 쀑!" 브랜치

dev λΈŒλžœμΉ˜λŠ” λ‹€μŒ 버전 배포λ₯Ό μœ„ν•œ "개발 쀑!" λΈŒλžœμΉ˜μž…λ‹ˆλ‹€. main λΈŒλžœμΉ˜μ—μ„œλΆ€ν„° λΈŒλžœμΉ­μ„ ν•˜λŠ”κ²Œ 보톡이며, κ°€λŠ₯ν•˜λ©΄ ν”„λ‘œμ νŠΈ νŒ€μ›κ³Ό ν”„λ‘ νŠΈμ—”λ“œμ™€ λ°±μ—”λ“œμ˜ κ²°κ³Όλ₯Ό ν•©μ³μ„œ 확인해볼 수 μžˆμ„ μ •λ„λ‘œ μ€€λΉ„κ°€ λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. CI/CD νŒŒμ΄ν”„λΌμΈμ΄ 잘 κ΅¬μΆ•λ˜μ–΄ μžˆλ‹€λ©΄ dev 브랜치의 μ½”λ“œλ„ 배포λ₯Ό 해두고 μˆ˜μ‹œλ‘œ 확인할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

main λΈŒλžœμΉ˜μ™€ dev λΈŒλžœμΉ˜λŠ” Github 리포지토리에 늘 μ—…λ°μ΄νŠΈ λ˜μ–΄μžˆμ–΄μ•Ό ν•˜λ©°, νŒ€μ›μ˜ μ½”λ“œ 리뷰λ₯Ό λ°›κ³  μ§„ν–‰ν•˜λŠ” 것이 μ •μ„μž…λ‹ˆλ‹€. μ—„λ°€ν•œ μ½”λ“œ 리뷰가 μ–΄λ ΅λ‹€λ©΄, 같이 λͺ¨μ—¬μ„œ μ½”λ“œμ— λŒ€ν•΄μ„œ 이야기λ₯Ό λ‚˜λˆ„κ³ , 배포 상황을 μ κ²€ν•˜λŠ” μŠ€ν…λ“œμ—… 회의λ₯Ό 열어도 μ’‹μŠ΅λ‹ˆλ‹€. λ„ˆλ¬΄ 격식이 μžˆμ„ ν•„μš”λŠ” μ—†μ§€λ§Œ, κ°€λŠ₯ν•˜λ©΄ λͺ¨λ“  νŒ€μ›μ΄ 확인 κ°€λŠ₯ν•˜κ²Œ “μ–΄λ–€ μ½”λ“œμ˜ μ–΄λ””λ₯Ό μ™œ μ΄λ ‡κ²Œ λ°”κΏ¨μœΌλ©΄ μ’‹κ² λ‹€.”λΌλŠ” μ½”λ©˜νŠΈλ₯Ό Github Pull Request에 λ‚¨κΈ°λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€.

 

 

 

feature 브랜치

feature λΈŒλžœμΉ˜λŠ” κΈ°λŠ₯ 개발, λ¦¬νŽ™ν† λ§, λ¬Έμ„œ μž‘μ—…, λ‹¨μˆœ 였λ₯˜ μˆ˜μ • λ“± λ‹€μ–‘ν•œ μž‘μ—…μ„ κΈ°λ‘ν•˜κΈ° μœ„ν•œ λΈŒλžœμΉ˜μž…λ‹ˆλ‹€. λΆ„λ₯˜λ₯Ό μ„Έμ„Έν•˜κ²Œ λ‚˜λˆ„κΈ°λ₯Ό μ›ν•˜λŠ” νšŒμ‚¬μ—μ„œλŠ” refactor, fix, docs, chore와 같이 μ„Έμ„Έν•˜κ²Œ 컀밋 λ©”μ‹œμ§€λ‚˜ 브랜치 λͺ…에 prefixλ₯Ό 달기도 ν•©λ‹ˆλ‹€. μ•„λž˜λŠ” feature 브랜치 이름과 컀밋 λ©”μ‹œμ§€μ˜ μ˜ˆμ‹œμž…λ‹ˆλ‹€. 더 λ§Žμ€ μ‚¬λ‘€λŠ” Conventional Commits 에 λŒ€ν•΄μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

hash (브랜치 λͺ…) 컀밋 λ©”μ‹œμ§€
2f85eea (feat/create-todo) feat: Todo μΆ”κ°€ κΈ°λŠ₯
2ad0805 (fix/var-name) fix: λ³€μˆ˜ 넀이밍 μ»¨λ²€μ…˜μ— 맞게 λ³€μˆ˜λͺ… λ³€κ²½ (ismale => isMale)
e7ce3ad (refactor) refactor: λΆˆν•„μš”ν•œ for 루프 μ‚­μ œ

feature λΈŒλžœμΉ˜λŠ” 보톡 각 개인의 둜컬 λ¦¬ν¬μ§€ν† λ¦¬μ—μ„œ λ§Œλ“€κ³  μž‘μ—…ν•©λ‹ˆλ‹€. feature λΈŒλžœμΉ˜λŠ” κΈ°λŠ₯ κ°œλ°œμ„ μœ„ν•œ 브랜치이기 λ•Œλ¬Έμ— 2λͺ… 이상 같이 μž‘μ—…ν•˜λŠ” κ²½μš°κ°€ λ“œλ¬Όμ–΄μ„œ, 브랜치 μƒμ„±μ΄λ‚˜ μ‚­μ œμ— λŒ€ν•΄μ„œ λ„ˆλ¬΄ λ‘λ €μ›Œ ν•  ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€. μž‘μ€ κΈ°λŠ₯이라도 브랜치λ₯Ό μƒˆλ‘œ λ§Œλ“€κ³ , 자주 μ»€λ°‹ν•˜κ³ , 자주 원격 Github 리포지토리에 pushν•˜μ—¬ νŒ€μ›λ“€κ³Ό κ²°κ³Όλ₯Ό κ³΅μœ ν•˜λŠ” 것이 λ°”λžŒμ§ν•©λ‹ˆλ‹€. 개인 둜컬 λ¦¬ν¬μ§€ν† λ¦¬μ—μ„œ λ„ˆλ¬΄ 였래 μž‘μ—…μ„ ν•˜λ‹€λ³΄λ©΄, μ‰½κ²Œ λ°œκ²¬ν•  수 μžˆλŠ” 였λ₯˜λ„ 발견이 λ˜μ§€ μ•Šκ³€ ν•©λ‹ˆλ‹€. 더 λ‚˜μ€ μ½”λ“œλ₯Ό μœ„ν•΄ ν”Όλ“œλ°± λ°›λŠ” 것을 λ‘λ €μ›Œν•˜μ§€ λ§™μ‹œλ‹€.

νšŒμ‚¬μ— λ”°λΌμ„œ 컀밋 기둝을 λ‚¨κΈ°λŠ” 일반적인 rebase-and-merge, κΈ°λŠ₯λ§ˆλ‹€ κΉ”λ”ν•˜κ²Œ 컀밋을 남기기λ₯Ό μ›ν•΄μ„œ 컀밋 기둝을 μ •λ¦¬ν•˜λŠ” squash-and-mergeλ“± λ‹€μ–‘ν•œ merge μ „λž΅μ΄ μžˆμŠ΅λ‹ˆλ‹€. 이번 Pre-Projectμ—μ„œλŠ” squash-merge μ „λž΅μ„ μ‚¬μš©ν•΄λ³΄κ³ , Main-Projectμ—μ„œλŠ” νŒ€μ›κ°„ μƒμ˜λ₯Ό 톡해 merge μ „λž΅μ„ μ„Έμš°κΈΈ λ°”λžλ‹ˆλ‹€. λ§Žμ€ 경우 feature λΈŒλžœμΉ˜λŠ” λ¨Έμ§€ν•˜κ³  λ‚˜μ„œ μ‚­μ œν•˜μ§€λ§Œ, 볡원해야 ν•  ν•„μš”μ„±μ΄ μžˆλŠ” κ²½μš°λŠ” 남겨두기도 ν•©λ‹ˆλ‹€.

 

였호라

근데 squash-and-mergeλ₯Ό 더 μžμ„Ένžˆ μ•Œμ•„λ³΄μž

 

 

 

squash-and-mergeλž€?

squash-and-mergeλŠ” 병합할 λ•Œ μ—¬λŸ¬κ°œμ˜ 컀밋을 ν•˜λ‚˜μ˜ μ»€λ°‹μœΌλ‘œ ν•©μΉœ ν›„ λ¨Έμ§€ ν•˜λŠ” 방식
Squash merging is a merge option that allows you to condense the Git history of topic branches when you complete a pull request. Instead of each commit on the topic branch being added to the history of the default branch, a squash merge adds all the file changes to a single new commit on the default branch

아직 μ •ν™•νžˆλŠ” λͺ¨λ₯΄κ² μ§€λ§Œ, μž‘μ—…ν•  κ±Έ λ§ˆμŠ€ν„°/메인에 λ°”λ‘œ μ»€λ°‹ν•˜λŠ” 게 μ•„λ‹ˆλΌ, λ‘œμ»¬μ—μ„œ 각각 μž‘μ—…ν•œ λΈŒλžœμΉ˜λ“€μ„ λ¨Όμ € λ¨Έμ§€ν•œ ν›„,

κ·Έ λ‹€μŒμ— λ§ˆμŠ€ν„°/메인에 λ³‘ν•©ν•˜λŠ” 걸둜 μ΄ν•΄ν–ˆλ‹€.

 

 

 

 

 

 

 

 

 

μ°Έκ³ 

μ½”λ“œμŠ€ν…Œμ΄μΈ 

https://docs.microsoft.com/ko-kr/azure/devops/repos/git/merging-with-squash?view=azure-devops

https://sabarada.tistory.com/196