공사중

쉽게 정리한 Git 사용법 : 왜 쓰는가? 본문

개발 | Git

쉽게 정리한 Git 사용법 : 왜 쓰는가?

행운개발자 LuckyDeveloper 2019. 2. 18. 18:01

  Git은 버전 관리 시스템입니다. (VCS, Version control system) 

  

  어떤 작업을 하고 결과.txt를 만들었다고 가정하겠습니다. 그런데 자꾸 수정 사항이 발생해서 결과_최종.txt, 결과_최종2.txt이라는 파일을 또 만들었습니다. 각각은 버전1,2,3이라고 하겠습니다. 만약 버전 관리시스템이 없다면 3개의 버전을 모두 드라이브에 저장할 것입니다. 3개정도면 그냥 저장할만합니다. 


  하지만 이렇게하면 크게 두 가지 문제점이 있습니다. 

1. 큰 프로젝트의 경우 모든 버전에 대한 자료를 다 저장할 수 없다. (저장공간의 한계)

2. 귀찮게 진행하던 프로젝트를 끄고, 원하는 프로젝트를 찾은 후에 다시 켜야한다.


  git은 위의 문제점을 다음과 같은 방법으로 해결합니다. 


Checkout!


  git은 각 버전의 정보를 '특정시점에 대한 상태'(이하 스냅샷snapshot)으로 저장합니다.결과_최종.txt, 결과_최종2.txt와 같이 파일의 형태로 저장하는 것이 아니라 그 파일의 스냅샷만을 저장합니다. 각 스냅샷의 크기는 몇 kb가 되지 않습니다. 프로젝트를 통채로 저장하는 것보다 훨씬 저장공간을 덜 먹죠. 즉, 우리는 하나의 프로젝트에 대해서 여러개의 스냅샷(버전)을 가질 수 있습니다. 그리고 현재의 스냅샷에서 원하는 스냅샷으로 이동하는 것을 checkout이라고 합니다. 이 때 진행하던 프로젝트를 끄지 않고 cmd에서 한 줄의 명령어를 치면 됩니다.  


예를 들어서 아래와 같이 코드를 작성했다고 가정합니다.  이 상태를 ver1라는 스냅샷을 저장했습니다. 

그리고 이를 수정해서 ver2.라는 아래와 같은 상태로 만들었습니다.  이 상태를 ver2라는 스냅샷을 저장했습니다. 

이제, 만약 ver1에서 ver2로 혹은 반대의 경우로 Checkout(프로젝트를 끄지 않고 코드 전체를 원하는 시점으로 되돌리기)하고 싶으면 

git checkout ver1
//또는
//git checkout ver2

cmd창에 위와 같이 입력하기만 하면 됩니다.  ver1에서 ver2로 변하는 과정에서 수백 줄의 코드를 입력했다면 cmd에서 한줄을 입력해서 수백 줄을 편하게 지웠다가 실행해보고, 되돌려서 실행해보고 할 수 있다는 뜻입니다. 


뿐만 아니라 ver1를 내가 ver2를 친구가 작성했다면 이 둘을 합쳐서 하나의 파일로 만들 수 있습니다. 당연히 공통된 부분은 제외되고 서로 다른 부분만 굉장히 깔끔하게 합쳐집니다. ver1, ver2가 각각 수백줄에 달하면 합치는 과정도 참 머리아프겠죠? 이 부분은 여기에 복/붙하고 여기는 이 곳에 복/붙하고.. 이런거 안해도 됩니다. 


이제 git을 왜 배우라고 하는지, 배우면 뭐가 좋은지 조금 이해가 되었을 것이라고 생각합니다. 

아직 설명하지 않은 장점들이 많은데.. 나머지는 직접 공부하면서 느끼게 될 것입니다.