본문 바로가기
반응형
Programming/Git

Git의 개념과 사용법

by JAMINS 2016. 3. 12.

1. Intro

프로젝트를 진행하면서 우리는 매번 소스코드를 작성하며 개발을 해나갑니다. 간단한 프로젝트를 혼자서 진행할 경우 별도의 소스관리가 필요없지만 그렇지 않은 경우 소스의 이력 등을 확인할 수 있는 버전관리시스템을 도입하는 것이 효율적입니다. 대부분의 현업에서는 수많은 개발자들과 함께 규모있는 프로젝트를 진행하는 경우가 많기 때문에 Git 등의 버전관리시스템을 사용합니다. 프로젝트의 소스들은 개발자들에 의해 편집될 때마다 그 이력이 기록되고 관리됩니다. 프로젝트의 원활한 진행을 위해 Git에 대한 간단한 개념과 사용법에 대해서 알아보겠습니다.


대체 왜 Git이 어렵다고 하는 걸까요? 사실 버전관리시스템을 잘 다루는 것은 굉장히 어렵습니다. 자칫 잘못하다가는 이력이 뒤엉킬수도 있고 다른 개발자가 어렵게 개발해놓은 소스를 통째로 날려버릴수도 있습니다. 아니면 기존의 폴더관리 하듯이 사용하는 경우가 있습니다. (이런 경우는 시스템을 제대로 활용하지 못한다고 볼 수 있습니다.) 이처럼 다양한 경우의 수가 있기 때문에 디테일한 학습이 필요합니다. 원리를 확실히 알고 다양한 기능들을 적절히 활용한다면 그만큼 편리하고 효율적으로 프로젝트를 진행해 나갈 수 있을 것입니다.






2. SVN? Git??

기존 SVN을 사용하셨던 분들은 오히려 Git을 어려워하는 경우가 많습니다. 저 또한 예전 회사에서 SVN을 사용했었던 경험자로 Git을 접하였을 때 상당히 어려움을 느꼈던 경험이 있습니다. SVN과 Git. 상당히 비슷하다고 생각하여 Git을 SVN처럼 사용하는 경우가 있지만 SVN과 Git은 방식에서부터 차이가 있습니다.

SVN은 원격저장소가 기준이라면, Git은 로컬저장소가 기준이라고 볼 수 있지요. 이때문일까? SVN보다 Git이 장점이 더 많은듯합니다. 로컬 기반이기때문에 우선 속도면에서 빠르고 오프라인에서도 작업할 수 있다는 점입니다.

 

 

SVN

 SVN

 

 

 

Git 

 



SVN의 commit, checkout과 Git에서의 commit, checkout은 완전 다른 의미가 됩니다. 위의 그림처럼 SVN은 원격저장소 기준으로 저장되며 불러오지만 Git은 로컬저장소에 반영되고 불러오게 됩니다. 로컬저장소의 최신상태를 원격저장소로 반영하기 위해 별도로 Push라는 명령어를 실행해야합니다. Git 명령어에 대한 자세한 사항은 이후에 다뤄보겠습니다.

 

 

 



3. Git의 작업 영역과 흐름

Git은 아래와 같이 작업의 영역이 구분되어 있습니다. 


 



 

Unstaged (반영되지 않음) 상태인 working directory가 있고, 반영 준비중인 영역인 staging area, 최종 반영될 git repository.

이렇게 3가지의 영역으로 이루어져 있습니다. 반영할 소스파일은 반드시 staging area에 있어야만 합니다.

최종 반영될 때까지의 흐름은 아래와 같습니다.



(이미지 출처 : https://git-scm.com/book/ko/v1/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EA%B8%B0%EC%B4%88)



1) Git repository(로컬 저장소) 에서 새롭게 내려받을 때 checkout 명령어를 통해 가져옵니다. 이 때, 반영되지 않은 변경분은 날아가게되며 checkout 받은 파일들은 working directory에 위치하게 됩니다.


2) 최종 수정본으로 Git repository에 commit하기 위해서는 반드시 반영할 파일들이 Staging area에 있어야 합니다. add 명령을 수행하면 변경된 파일들이 staging area로 넘어갑니다. commit을 하면 아무일도 일어나지 않은 이유는 수정한 파일들이 staging area에 반영되지 않았기 때문입니다. 이 때는 반드시 변경분을 add 명령어를 통해 staging area로 올려야 합니다.


3) commit은 staging area의 파일들을 Git repository(로컬 저장소)에 반영합니다. 


git commit -a -m "commit message"


와 같이 -a 를 사용하면 별도의 add 명령어 없이 한번에 staging area에 추가와 commit을 하게 됩니다.






4. Git 설치

Git을 사용하기 위해서는 로컬에 Git을 설치해야 합니다. 

Git 다운받기 : https://git-scm.com/


Lastest source Release의 최신버전을 다운받고 설치를 하면 준비 끝.

원격 저장소의 경우 기존의 서비스를 이용하거나 직접 Git서버를 구축할 수 있습니다. 앞으로 실습할 때는 Bitbucket을 원격저장소로 활용할 예정입니다.

확실한 학습을 위해 Source Tree와 같은 GUI 툴은 사용하지 않을 생각입니다. 오로지 Git bash를 통해서 명령어를 직접 입력해보고 확인하는 방식으로 Git의 명령어를 알아보겠습니다.





댓글