1. 워터폴(Waterfall) 방법론
요구사항 정의(설계) → 디자인 → 개발 → 테스트 → 배포
2. 애자일(Agile) 방법론
agile이란?
: 기민한, 민첩한
2-1) 스크럼(Scrum)
① 개발자와 고객 사이의 지속적인 커뮤니케이션을 통해 요구사항을 수용한다.
② 고객이 결정한 사항을 가장 우선적으로 시행한다.
③ 팀원들과 주기적인 미팅을 통해 프로젝트를 점검한다. (예: 데일리 스크럼)
④ 주기적으로 제품 시현을 하고 고객으로부텅 피드백을 수용한다.
2-2) 칸반(Kanban)
1주차에 git의 정의와 사용법에 대해 간단하게 알아보았다면, 이번에는 협업할 때 유용하게 사용할 수 있는 branch
, merge
개념에 대해 알아보고자 한다.
branch
와 merge
에 대해서 알아보기 전에 다시 git이 무엇인지 간략하게 설명해자면,
git이란?
: 소스 코드를 효율적으로 관리하기 위해 만들어진 분산형 버전 관리 시스템이다.
1. Branch(브랜치)
1-1) branch 생성하기
// local branch 목록 확인
git branch
// 현재 브랜치에서 새로운 브랜치 생성
git branch "브랜치명"
// 브랜치 이동
git checkout "전환 브랜치명"
// 브랜치 생성과 이동을 동시에
git checkout -b "브랜치명"
// 브랜치 삭제 (단 삭제한 브랜치가 현재 브랜치에 합쳐져 있을 경우에만 가능)
git branch -d "브랜치명"
1-2) merge
// a 브랜치에 b 브랜치를 합치고 싶은 경우
// a 브랜치로 이동 후 b 브랜치와 merge
git checkout a
git merge b
a 브랜치와 b 브랜치에서 ①서로 다른 파일을 수정했을 때, ②서로 같은 파일에서 다른 부분을 수정했을 때에는 충돌 없이 알아서 merge 한다. 하지만, ③서로 같은 파일에서 같은 부분을 수정한다면 충돌(conflict)이 발생하여 수동으로 해결해주어야 한다!
add -> commit -> push
순으로 진행한다.1-3) 브랜치의 종류
협업에서 활용할 수 있는 branch 종류에 대해 알아보자.
① master : 제품으로 출시될 수 있는 브랜치이며, 배포 이력을 관리하기 위해 사용한다.
② develop : 다음 출시 버전을 개발하는 브랜치이며, 기능 개발을 위한 브랜치들을 병합하기 위해 사용한다.
③ feature : 기능 개발을 하는 브랜치이며, 새로운 기능 개발 및 버그 수정을 할 때마다 develop 브랜치에서 분기하여 사용한다.
④ release : 출시 버전을 준비하는 브랜치로, 배포를 위한 전용 브랜치이다.
⑤ hotfix : 출시 버전에서 발생한 버그 수정을 위한 브랜치이며, 배포한 버전에 긴급하게 수정해야 할 필요가 있는 경우에 master 브랜치에서 분기하여 사용한다.
2.git 명령어
2-1)reset
// 바로 이전 커밋 취소
git reset HEAD^
// 특정 커밋 취소
// 깃 로그 통해 취소하고자 하는 커밋의 SHA-1 체크섬을 확인한다.
git log
git reset --hard (커밋의 SHA-1 체크섬)
커밋의 SHA-1 체크섬
이미지 참고
2-2)Pull Request
2-3).gitignore
참고: 포스코x코딩온 강의 자료(1005개발문화,Git.pdf)
❗️ 4번까지는 문제 없이 해결하였는데, 수업 중에 'test'라는 브랜치를 이미 만들었다가 삭제했어서 push 하는 과정에서 아래와 같은 오류가 발생하였다. 'test' 브랜치 로컬 저장소에서는 삭제 되었지만, 원격 저장소에는 남아 있기 때문이라고 한다.
🤷🏻♀️ 어떻게 해결해야할까?
git push -u origin +브랜치명
-> 위와 같은 명령어를 사용하여 로컬에서 현재 작업한 내용을 원격 저장소에 강제로 push하여 덮어 씌울 수 있다.
-> 성공적으로 push 한 후, 수동으로 merge 충돌을 해결하고 add -> commit -> push 를 진행한다.