Quiz- Git, Branch strategy, Conflict
1. Git이 무엇인지와 장점에 대해서 설명해주세요.
- git은 오픈 소스 버전 관리 시스템입니다. git은 서로 완전히 독립적인 여러 로컬 브랜치를 가질 수 있도록 허용하고 권장합니다.
- git의 장점
- 브랜치 간 이동이 자유롭습니다.
- 브랜치 별로 역할을 다르게 해서 역할별로 개발할 수 있습니다.
- 새로운 브랜치에서 실험하고, 잘 작동하면 기존 브랜치에 병합하고 잘 작동하지 않으면 버릴 수 있습니다.
- 일부 파일만 스테이징하거나 커밋할 수 있습니다.
2. Git Branch 전략은 어떤 것을 써보았고, 어떤 장점을 느꼈는지 설명해주세요.
- 이전 팀 프로젝트에서는 git flow 전략을 사용해봤고, 이번 팀 프로젝트에서 github flow 전략을 사용해봤습니다.
- git flow 전략은 각 용도에 맞게 master, develop, feature, release, hotfix 브랜치를 분리해서 사용하는 전략입니다. 제가 느꼈던 git flow의 장점은 병렬 개발을 통해 별도의 브랜치에서 작업하는 동안 메인 브랜치는 안정적으로 배포할 수 있다는 것입니다.
- github flow 전략은 git flow에서 develop, release, hotfix 브랜치를 제거한 간소화된 브랜치 전략입니다. 제가 느낀 github flow의 장점은 짧은 프로덕션 주기와 빈번한 배포를 통해 팀이 문제를 빠르게 파악하고 해결할 수 있고 지속적인 개발이 가능하다는 것입니다.
3. Git에서 Merge/Rebase를 할 때 Conflict가 발생하면 어떤 식으로 해결하나요?
- merge 또는 rebase하려는 두 브랜치에서 동일한 파일을 수정했을 때 충돌이 발생합니다.
git status
를 실행하여 충돌이 일어난 파일을 찾습니다.
- 둘 중 의도한 수정 내용을 선택하여 수정한 후
git add
를 실행합니다.
- 모든 충돌을 해결한 후,
git commit
을 실행하여 merge/rebase를 마무리합니다.
3.1 merge와 rebase는 각각 어떤 상황에서 사용하나요?
- merge는 커밋 이력을 모두 남기면서 두 브랜치를 병합하려고 할 때, rebase는 커밋 이력을 깔끔하게 정리하면서 두 브랜치를 병합하려고 할 때 사용합니다.
- merge는 feature 브랜치를 master 브랜치로 병합할 때, rebase는 relase 브랜치를 master 브랜치로 병합할 때 사용했습니다.
참고