본문 바로가기
컴퓨터공학/개발환경

버전관리 | Git

by KISCH 2019. 9. 26.
반응형

 

깃허브

 

유사버전관리


 파일에 넘버링을 하는 시스템

위키피디아 : 전세계 여러 사람들이 만드는 백과사전역사보기(하나하나의 수정된 버전)

드랍박스 : 클라우드 스토리지 서비스컴퓨터 저장  서버 전송서브버전(이전버전도 저장되어있음)

 

 

 

버전관리시스템


소스코드의 중요한 의미있는 변화들을 기록하여

기능개선및 버그수정 등

관리가 용이하도록 버전화

 

git-scm.com

 

Git

 

git-scm.com

다운 설치 -> 터미널 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 작동원리

 

 

 

 

 

반응형

댓글