내가 보려고 정리하는 블로그
1. git 간단한 개념들 본문
혼자서 또는 여럿이서 프로젝트를 수행하다 보면 수행물을 저장 해야할 공간이 필요하고 프로젝트의
기능을 추가 , 소스를 수정한 후 혼자 또는 여럿이서 함께 소스를 공유할 공간이 필요하다.
전자정부 프레임워크는 svn을 사용하지만 대부분의 프로젝트는 git 또는 github를 사용하게 된다.
svn은 한 공간에 다같이 만든 소스를 저장하고 다른 사람이 저장한 소스를 내 컴퓨터로 저장할 수 있는 단순한 기능으로 형상관리를 하게 되고 하나의 저장소 만을 사용하게 된다. (자세한 내용능 svn카테고리)
git의 경우 팀원의 소스를 관리하는 전체 저장소와 팀원 각자의 소스와 히스토리를 보관하는 저장소를 따로 관리하여
형상관리가 이루어지고 누군가 실수로 전체소스에 기능을 삭제 하더라도 다시 복구 가능하며 svn보다 더 안정적이다.
(자세한 이유는 이후에)
저장소(repository)
소스코드가 저장되어 있는 여러개의 브랜치(Branch)들이 모요 있는 디스크상의 물지적 공간
원격저장소만 있는 svn과 달리, git에서는 저장소가 로컬 저장소(Local Repository)와 원격저장소(Remote Reposiroty)로 나눈다.
작업을 시작할 때 원격 저장소에서 로컬 저장소로 소스코드를 복사해서 가져오고(Clone), 이후 소스코드를 변경한 다음
커밋(Commit)을 한다.
이때, 커밋한 소스는 로컬 저장소에 저장되며 , 푸시를 하기 전에는 원격저장소에 반영이 되지 않는다.
체크아웃(checkout)
특정 시점이나 브랜치의 소스코드로 이동하는 것을 의미한다.
체크아웃의 대상은 브랜치, 커밋, 태그 이다.
SVN에서는 뭔격저장소의 파일을 작업하기 위해 로컬로 가져오면서 동시에 다른사람이 수정 할 수 없도록 Lock을 거는 과정을 의미하며, git에서의 체크아웃과는 전혀 다른 의미이다.
커밋(Commit)
작엄한 내용을 로컬 저장소에 저장하는 과정
각각의 커밋은 의미있는 변경단위이고, 변경에 대한 설명을 커밋로그로 남긴다.
태그(Tag)
커밋의 임의 위치에 쉽게 찾아볼 수 있도록 붙여놓은 이정표
Commit ID대신 태그명을 입력하여 쉽게 체크아웃 할 수 있다.
푸시(Push)
로컬 저장소의 내용 중 원격저장소에 반영되지 않은 커밋을 원격 저장소로 보내는 과정
SVN애서의 커밋은 변경사항을 원격 저장소로 저장하는 과정을 의미한다.
git에서의 커밋은 로컬저장소로 변경사항을 반영하는 것을 의미하며, 원격 저장소로 변견사항을 보내는
과정은 푸시이다.
풀(Pull)
푸시와 반대로 원격저장소에 있는 내용 중 로컬 저장소에 반영되지 않은 내용을 가져와서 로컬 저장소에 저장하는 과정을 의미한다.
이를 통해 다른 팀원이 변경하고 푸시한 내용을 로컬 저장소로 가져올 수 있다.
푸시 과정에서 충돌이 일어나서 푸시가 거절된경우, 풀을 통해 원격 저장소의 변경내용을 반영한 뒤 다시 푸시시도
브랜치(Branch)
커밋을 단위로 구분된 소스코드 타임라인에서 분기하여 새로운 커밋을 쌓을 수 있는 가지를 반드는 것
브랜치 중에 개발의 주축이 되는 브랜치를 마스터 브랜치라 하며, 모든 브랜치는 마스터 브랜치에서 분기되어 최종적으로 다시 마스터 브랜치에 병합되며 개발을 진행
병합(Merge)
브랜치와 반대되는 개념으로 하나의 브랜치를 다른 브랜치와 합치는 과정을 의미한다.
'형상관리 > Git' 카테고리의 다른 글
3. git 초기설정 (0) | 2020.01.06 |
---|---|
2. git 주요명령어 (0) | 2020.01.06 |