- CVCS (중앙 집중형 관리) : 중앙 서버에서 모든 파일과 버전 관리
- ex) SVN (Apache Subversion)
- DVCS (분산형 관리) : 각 개발자의 로컬 컴퓨터에 모든 파일과 변경 이력 복제됨
- ex) Git
형상 관리의 조건과 특징
- 불변해야함
- 기존 데이터와 변경 데이터가 같이 남아있어야함
- 형상 관리는 폴더로 함
- 파일을 각각 따로 관리 하는게 아니라 폴더 통째로 관리
- 용량과 불필요한 내용이 늘어나는 단점은 소프트 링크 활용해서 수정된 부분만 바꾸는 것으로 해결
- commit을 하면 내용을 되돌릴 수 있어서 반드시 찾을 수 있음 (commit을 꼭 해야함)
- 중앙 관리보다 분산 관리로 하는게 유리함
- 대표적인게 Git (Github는 Git으로 관리하는 저장소(하드디스크))
merge(병합)
- Fast-Forward Merge
- 현재 브랜치가 다른 브랜치의 커밋 기록을 모두 포함하고 있을 때의 병합 방식
- 두 브랜치 간의 공통 조상 커밋부터 병합하려는 브랜치까지의 변경 사항 그대로 반영하여 현재 브랜치의 Head(포인터)를 병합하려는 브랜치의 최신 커밋으로 이동시킴
- Three-Way Merge
- 두 브랜치가 각각 다른 변경 사항을 포함하고 있을 때의 병합 방식
- 두 브랜치가 공통으로 가지는 조상 커밋, 현재 브랜치의 최신 커밋, 병합하려는 브랜치의 최신 커밋, 이렇게 세 개의 커밋을 비교하여 병합
- Git은 공통 조상 커밋부터 양쪽 브랜치의 최신 커밋까지의 차이점을 찾아 병합하는데 충돌 발생할 수 있고 사용자가 수동으로 해결해야함

VS코드에서의 Git을 통한 형상 관리 실습 - Git 협업
[ Three-Way Merge를 Fast-Forward Merge로 바꿔서 병합하기 ]
- VS코드의 터미널을 열고 기본값을 git bash로 설정
- git에 대한 명령어 작성할 수 있음



- 깃허브에 git_test_blog_v2 리포지토리 생성하고 VS코드에 열어 놓은 폴더에 리포지토리 클론
- workspace에 clone이라는 폴더 생성해놓고 VS코드에 열어놓음
- 터미널에 git clone 리포지토리URL 작성


- 터미널에서 명령어 작성해서 git 연결하고 폴더 접근
- git init : git 연결 (열기)
- cd 폴더명 : 폴더 접근
- cd .. : 접근 해제하고 상위 폴더로

- update 브랜치로 전환하고 회원 정보 수정 기능 추가
- git checkout -b 브랜치명 : 브랜치 전환 ⇒ 브랜지 전환(checkout)을 하는데 해당 브랜치 없으면 생성(-b)하라 ⇒ 브랜치 생성할 필요없이 이미 존재하면 git checkout 브랜치명
- nakyeom 폴더에 회원 정보 수정 기능 추가


- update 브랜치로 commit
- 기능 하나 마다 commit하는게 좋음
- 커밋 내용 앞에 feat을 붙이면 구현 완료, fix를 붙이면 수정 중의 의미
- commit 하고 바로 push하지 않기 주의

- master 브랜치로 전환하고 pull 하기

- update 브랜치로 돌아와서 master 브랜치 내용 rebase한 다음 push 하기
- git rebase 브랜치명 : 해당 브랜치 내용 rebase
- rebase
- master 브랜치의 최신 변경 사항을 현재 작업 중인 브랜치에 재배치
- 이 경우 현재 작업 중인 update 브랜치의 커밋을 master 브랜치의 최신 커밋 이후로 다시 쌓도록 재구성
- 형상 트리를 같게 맞춰놓고 push하기 위함 ⇒ Three-Way Merge를 Fast-Forward Merge로 바꾸기 위함

- 깃허브 리포지토리에도 update 브랜치 생성된 것 확인

- 깃허브 리포지토리에서 Pull request로 merge 요청
- Pull request → New pull request
- base는 master 브랜치 그대로 두고 compare에는 update 브랜치 설정 → Able to merge 상태 확인 → Create pull request



- 내용 작성 → Create pull request

- Merge pull request → Confirm merge
- Commits와 Files changed 들어가서 코드 수정 내용 확인한 후 merge하면 됨


- git에서의 merge 완료 확인

- Pull requests의 closed 들어가면 merge 내역 확인 가능

- VS코드 돌아와서 로컬에서도 master 브랜치에 pull 해서 merge하면 완료


Share article