깃(Git)


사전 지식

형상 관리(Softwaree Configuration Management)

  • 정의 : 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동.
  • 소프트웨어 개발 전 단계에 적용되는 활동으로 개발 뿐만 아니라, 유지보수 단계에서 수행되면서 소프트웨어 개발의 전체 비용을 감소시키고, 개발 과정에 있어 많은 리스크 요인이 최소화 되도록 보증하는 것을 목적으로 함.

깃(Git)이란?

구분 도구 비고
folder 공유 RCS, SCCS  
Client/Server Subversion(SVN), CVS, Perforce, ClearCase, TFS 중앙 저장소
분산 저장소 Git, Mercurial, SVK, Darcs 분산 저장소 제공, Offline 개발 작업 다수일 경우 유리
  • 분산형 저장소(Distributed Version Control System)의 일종.
  • 분산형 저장소는 소스코드의 하나의 중앙 서버에만 저장되는 것이 아니라, 다수의 서버나 다수의 개발자 local PC에 저장될 수가 있으며, 각각이 소스코드 저장소가 된다.
  • 클라이언트가 마지막 Snapshot을 직접 다운 받지 않고 저장소 전부를 복제하고, 서버가 문제가 생기면 클라이언트의 카피본으로 서버를 복원할 수 있다.

특징

  • 팀 단위나 기능 단위로 저장소를 분리해서 개발하거나 릴리즈 버전 단위로 저장소를 분리해서 개발할 수 있는 등 소스코드 버전 관리에 많은 유연성을 가지고 있다.
  • 중앙 저장소의 개념이 없기 때문에 특정 VCS만 문제가 없다면 개발을 계속할 수 있다.

주요 용어

  • Commit(커밋) : 그 시점의 저장 장소에 대한 체크포인트를 설정할 수 있음.
  • Branch(브랜치) : 하나의 프로젝트에 대한 혼선을 방지하기 위해, 여러 개발자들이 가지를 쳐서 자신이 변경하고 싶은 자신만의 버전을 만들 수 있음. 브랜치가 끝난 후 master에 다시 merge를 한다.
  • Merge(머지) : 각각의 개발자가 Branch 작업을 통해 각각의 작업이 끝난 이후, 이것을 합치기 위한 작업. 이와 비슷하게 commit내용을 모아 붙이는 Rebase 작업도 잇다.
  • Repository(저장소) : repo라고 부르기도 함, 프로젝트가 위치하고 있는 디렉토리나 저장 공간을 의미
  • Push(푸시) : 로컬 저장소에서 commit 한 내용을 원격 저장소로 공유하는 명령어
  • Pull(풀) : push와 반대로 원격 저장소의 내용을 로컬 저장소로 가져오고 싶을 때 사용

git 사용해보기 (MAC OS)

/*
실행 환경 : Mac Terminal 창
default directory : git 원격 디렉토리를 Local로 불러온 최 상위 계층
TO-DO : 반영 요소를 origin에 간단히 push 해보기.
*/

/*현재 디렉토리 내 하위 요소들을 원격 저장하기 위해 add*/
git add *

/*git add 후 commit 을 해준다. -m option을 통해 대충 커밋 제목을 입력*/
git commit -m "first commit"

/*커밋 한  요소들을 이제 원격으로 날린다(push)*/
git push origin master