1. OverView
소프트웨어 공학의 목적 - 어떻게 고객이 원하는 고품질의 생산성이 높은 프로그램의 만드는것이 목적
품질이 높은소프트웨어 - 생산성,유지보수 좋다.
고객의 원하는 요구사항을 명확하게 캐치하는것이 필요함 - 요구공학 프로세스 - 최종합의에 대한 도장을 찍는것을 Baseline이라고함소프트웨어 공학에서의 형상관리란 - 모든 산출물에 대한 형상관리를 하는것을 얘기한다. 모든것 (다른문서 또한) 관리가 가능하다.
Git 을 써야되는이유? - 파일시스템 기반의 형상관리는 제약사항이 많이 발생한다.
1.2. SW 형상관리
- SW 를 생산 하는 과정에서 발생하는 모든 산출물을 관리
- 협업하는 환경에서 데이터의 무결성을 보장
- 요구사항분석부터 테스트까지 이력 추적성 보장
1.3. 베이스라인 (BaseLine)
- SW 개발에 발생하는 모든 산출물 및 명세에대한 이해당사자들간의 합의된 시작 지점
- 흔히 말하는 버전(Version)과 같은개념
- 협업하는 환경에서 베이스라인은 소통하는 기준이 되며, 베이스라인이 불명확한 경우 개발혼선이 발생할 수 있다.
1.4. 형상통제위원회 (CCB : Configuration Control Board)
무분별한 변경이 발생하고 있고, 통제 되지 않는다.
제품 출시 준비와 지속적인 솔루션 개선이 이루어 져야한다.
잠재 오류가 출시 제품에 들어가는 것은 아닌지 우려 스럽다.
출시전 계속적으로 버그가 발생한다고 했을때 어떻게 처리해야될것인지에 대한 통제를 CCB에서 해야된다. (PM, 또는 테크니컬 그룹이 진행함) - 보통회의를 얘기함
1.5 형상 관리 도구 (Configuration Management Tool)
SUBVERSION VS GIT
2. Git 이란
Git간단한 설명
특징
빠른속도
단순한 구조
비선형적인 개발 (수천 개의 동시 다발적인 브랜치)
완벽한 분산
리눅스 커널 같은 대형 프로젝트에도 유용
2.1 Git 설치
2.2 Git workflow
Git 저장소를 만드는 두가지 방법
원격지에서 저장소를 로컬로 가져오는 방법
유니크한 레포지토리를 처음부터 만든다.
Git Pull = Fetch + Merge 의 명령어 조합이다.
Git Fetch - 원격지에 리포트정보를 로컬리포지토리에 알려줌
Commit - 변경단위에 하나의 묵을을 만드는것을 말한다.
git commit -a : 모든 수정사항을 한번에 기록하겠다.
git add : 수정사항을 묶어주기위한 단위명령어이다. a,b,c중 a,b만 올릴려고 할경우
Tracking 정보가 Staging Area에 정보가 올라간다.
git Checkout : 브랜치정보를 옮기는 것을 얘기한다.
git diff : 레포지터리내용과 내가 수정한내역 확인
Git 레포지토리 생성시 중첩시켜서 만들지말것!!!!!!!
상위디렉토리안에 .git 파일이 있는지 반드시확인한다.
.git 로컬레파지토리 DB정보
Git Server 구성
Git 을 제공용 레포지토리로 만들려면 Bare파일로 만들어서 제공해야된다.
–bare타입으로 만들어야됨. 소스파일 없이 생성
Bare타입을 어떻때 쓰는가?
로컬로 가져있는 소스환경을 외부에서 가져올수 없다.
내부에 깃서버를 따로써서 이력관리를 하고 싶다.
cat .git/config
–bare타입 옵션을 걸고 만들었을때와 아닐때의 차이점은 무엇인가?
git clone 시 remote정보를 여러개로 할수도 있다.
remote정보가 –bare타입이아니면 에러가난다.
remote , branch 도 여러개 가져갈수 있다. .git/config정보를 알면 좋음.
Git Branch / Git Checkout
Git Branch 로 인해 비선형적 개발이 가능하다.
Git에 체인지단위는 Diff로 구성된다. 각각 Diff는 디펜던시를 가진다.
기본브랜치는 Master 브랜치이다.
Checkout 명령어로 브랜치를 선택한다.
반드시 -b 옵션을 줘서 브랜치를 로컬로 새로 생성한다.
커밋아이디는 유니크하므로 커밋아이디 8자리만 적어줘도된다.
충돌날때 방안
커밋을 하지않았을때 stash
개발자별로 브랜치를 별도로 따는게 바람직하지 않음(10명이 개발자가 하나씩딴다고한다면)
Master 브랜치에 4개의 각기다른 브랜치가 발생한다면, merge commit이 여러번발생할수 밖에없음. 체리픽을 이용하면, 이부분을 깔끔하게 해결할수 있음. 하지만 체리픽 하게되면 커밋아이디가 새로 따지므로, 이력관리가 백프로이어지는 건아님.
파일하나단위로 커밋하고 푸쉬를 자주하는 구조는 결코 바람직하지않다.
그래프가 깔금하게 유지하기위해서 로컬브랜치를 여러개 따서 작업을 하며, 로컬브랜치에 작업이 끝난경우 최종본에 대한 브랜치만 푸쉬하는방식으로 하면 이력관리가 깔금하게된다.
git check VS git reset 차이점
git reset –hard 헤드위치를 소스까지 적용시킨다.
• git reset
• git revert
• git stash
• git remote
• git diff
• git difftool
• git format-patch
• git am (apply merge)
• git grep
revert 커밋을 또 revert 할수있을까? 있다…revert한 이력에 커밋을 남긴다.
confilic 했을때의 대처방안
git stash 활용용도
http://wit.nts-corp.com/2014/03/25/1153
git format-patch
'형상관리' 카테고리의 다른 글
GitHub, Git 로컬저장소에서 원격지저장소로 push 하기 (0) | 2019.01.23 |
---|---|
GitHub 시작하기 (0) | 2019.01.23 |
Git 명령어 연습 및 정리 (0) | 2019.01.03 |
Intellij 에서 SVN Source Commit 하기 (0) | 2018.11.01 |