Git이란? (ft. version control, SVN, github)
Git이란 무엇일까요?
Git이란 버전 컨트롤 프로그램의 한 종류입니다. (svn과 같은)
그럼 버전 관리(컨트롤) 툴이란 어떤 걸 의미할까요?
쉽게 설명하자면, 이력서를 만들 때, 여러가지 버전을 만드는 것을 생각하면 편합니다.
지원하는 회사마다, 강조하고 싶은 경력이나, 이력이 있고, 또 빼고 싶은 사항이나 추가하고 싶은 사항이 다를 수 있겠죠?
그리고 시간이 지날수록, 추가 하고 싶은 게 많지만, 예전의 버전도 남겨놓고 싶을 수 있을 겁니다.
버전별로 새로운 파일을 저장할 수도 있겠지만, 버전 관리 툴은, 그런 번거로움 없이, 하나의 파일만 유지한 채로 그 기록을 기록만 한다면 모두 저장할 수 있습니다.
그럼 git과 SVN의 차이는 어떻게 될까요?
Git은 분산관리식 구조인 반면에, SVN은 중앙집중식 입니다.
때문에, SVN 에서는 누가 한번 commit을 치면 전체가 다 업데이트 됩니다.
반면에, Git은 commit을 하더라도 remote repository에 push를 하지않으면, 다른 사람이 내가 업데이트한 코드를 알 수 없습니다.
그래서 혼자 사용할 수도 있고, 여러 사람이 같이 사용할 수도 있다는 장점이 있지만,
SVN보다 덜 직관적이고, 사용하기가 더 까다롭다는 단점이 있습니다.
말이 나온 김에, remote repository (리모트 저장소)에 대해서 알아볼까요?
Git은, SVN과는 다르게, 서버 없이 로컬에서도 충분히 사용이 가능합니다. 심지어는 인터넷이 없어도 가능합니다!
하지만 나의 작업을 다른 사람들과 공유하고 싶을 때는, 리모트 저장소를 사용해야 합니다.
리모트 저장소는, 나의 커밋들을 올릴 수 있는데, 이를 푸쉬라고 합니다.
리모트 저장소에는, github, gitlab, bitbucket 등 여러 종류가 있습니다.
리모트 저장소를 사용하면, 여러 사람들과 공유할 수 있을 뿐만 아니라,
내가 다른 컴퓨터에서 내 프로젝트를 불러올 때도, URL만 있으면 가능하기 때문에 git을 사용하는데 있어서
거의 필수불가결한 요소라고 볼 수 있습니다.
오늘은 Git에 대해서 알아보았는데요,
Git은 개발을 하느데 있어서 가장 중요한 툴 중 하나라고 자신있게 말할 수 있습니다.
대부분의 경우 개발을 혼자 하는 게 아니기 때문에 무조건적으로 알아야 하고 익숙해져야 하는 도구라도 말할 수 있겠고,
개발을 하는 와중에도 항상 기록을 남겨 놓아야지 그 전에 했던 일들을 돌아볼 수 있기 때문에,
개발을 하는 사람이라면 0순위로 알아야 하는 툴이라고 생각합니다.