유사버전관리
파일에 넘버링을 하는 시스템
위키피디아 : 전세계 여러 사람들이 만드는 백과사전. 역사보기(하나하나의 수정된 버전)
드랍박스 : 클라우드 스토리지 서비스. 컴퓨터 저장 시 서버 전송. 서브버전(이전버전도 저장되어있음)
버전관리시스템
소스코드의 중요한 의미있는 변화들을 기록하여
기능개선및 버그수정 등
관리가 용이하도록 버전화
다운 설치 -> 터미널 git 입력하여 사용할 수 있다.
SVN
자유 소프트웨어 버전 관리 시스템으로
중앙집중식, 중앙저장소이며
해당 저장소에서 코드를 사용해야 할 때 로컬에서 해당 저장소의 버전을 체크아웃
지속적인 통신
revision (개정판) : 논리적 단위, 스냅샷
브랜치 : 폴더
git
오프라인 작업 가능 : 푸시 할 때만 연결
로컬 변화 -> 중앙 저장소 커밋 -> 다른 사람들이 받을 수 있게
커밋 : 로컬 작업, git 의 논리적 단위(스냅샷 필요 없음)
푸시 : 온라인
브랜치 : 단순 커밋
Git 개념
원격저장소 : Github, 여러 사람이 함께 공유하기 위한 저장소
로컬저장소 : 니 컴, 개인 전용 저장소
Commit
파일을 내 컴퓨터의 저장소에 적용시킴, 로컬 작업
영문/숫자로 이루어진 40자리 고유 이름
메시지 : 필수, 형식(first line:요약, second line:빈칸, third line:이유)
Work tree / Index
작업 트리 : 폴더
인덱스
커밋을 실행하기 전의 저장소와 작업트리 사이에 존재하는 가상 공간
준비 영역. 커밋 전 버전으로 생성 될 파일을 갖고 있는 공간
Stage
스테이징 : 인덱스에 파일 상태를 기록(인덱스에 등록
Push : 로컬 저장소에서 변경된 이력을 원격 저장소에 공유 -> 원격 저장소로 변경된 파일을 업로드하는 것
Clone : 복제, 원격 저장소의 내용을 통째로 다운로드 하는 것
Pull : 원격 저장소에서 로컬 저장소로 업데이트
Merge
내가 pull 실행한 후 다른 사람이 push 하여 원격 저장소를 업데이트 해버린 경우 -> 내 push 요청 거부
merge (병합) : 다른 사람의 업데이트 이력을 내 저장소에서 갱신
자동
수동 : 파일의 동일한 부분을 변경한 경우, 어느 쪽을 저장할 것인지 자동으로 판단 할 수 없기에 충돌 발생
충돌 발생 부분 찾아서 직접 수정
Git 협업
http://blog.appkr.kr/learn-n-think/comparing-workflows/
1. Centralized Workflow : Git의 장점 : 로컬 저장소를 이용해서 개발, 브랜치와 병합
1.1 작동 원리 : 단일 중앙 저장소에 변경 내용 저장. master란 브랜치 사용
1.1.1 충돌 처리
중앙 저장소의 커밋이 기준
fetch -> rebase(재배열) : 다른 팀원이 변경한 내용에 자신의 변경 내용을 붙임
1.2 적용 사례 : 철이, 미애 2명 개발자
1.2.1 중앙 저장소 생성
1.2.2 중앙 저장소(별칭 Origin) 복제 : 로컬 저장소 생성(로컬 master)
1.2.3 철이의 작업
1.2.4 미애의 작업
1.2.5 철이의 작업 내용 발행 : Origin의 마스터에 push
1.2.6 미애의 작업 내용 발행
Origin의 마스터에 push-> 철이의 키밋 이력을 포함하고 있지 않아 거부
-> 철이의 커밋 이력을 로컬로 받아온 후 다시 푸시
1.2.7 미애의 리베이스
git pull : 중앙 저장소의 변경 이력을 내려 받는 도작과 로컬 이력과 합치는 동작
--rebase 옵션을 주면 중앙 저장소의 커밋 이력을 미애의 커밋 이력 앞에 끼움
1.2.8 미애의 충돌 해결
리베이스는 새로 내려 받은 master 브랜치에 미애의 로컬 커밋을 하나하나 대입 대조
#CONFLICT (content) : Merge conflict in <some-file> : 충돌 발생
$git status : 해당 명령어로 Unmerged paths 충돌이 발생한 부분 확인
$git add <some-file> : some-file 을 열어 충돌을 해결
$git rebase --continue : 리베이스 계속
1.2.9 미애의 작업 내용 재발행
1.3 다음 단계
2. Feature Branch Workflow : 핵심 컨셉은 기능별 브랜치를 만들어서 작업한다는 사실
2.1 작동원리
master 브랜치에 직접 커밋하지 않고, 새로운 기능을 개발할 때마다 브랜치를 만들어 작업
2.1.1 풀 리퀘스트
2.2 적용 사례
2.2.1
...
3. Gitflow Workflow
3.1 작동원리
'컴퓨터공학 > 개발환경' 카테고리의 다른 글
버전관리 | SourceTree (0) | 2020.01.16 |
---|---|
에디터 | ATOM (0) | 2019.12.16 |
개발환경 | 웹프레임워크의 종류 (0) | 2019.11.21 |
개발환경 | 프로그래밍 언어의 분류 (0) | 2019.11.21 |
개발환경 | 개발 도구의 종류 (1) | 2019.11.21 |
에디터 | SublimeText3 (0) | 2019.04.26 |
버전관리 | Github (깃허브) 사용법 (0) | 2019.04.26 |
개발환경 | 서버의 종류 (0) | 2018.09.19 |
댓글