git
은 소스 코드 관리 시스템(Source Code Management
)이라고도 불리는
버전 관리 시스템(Version Control System
)들 중의 하나이다.
코드를 작성할 때 코드의 변경 사항을 저장하는 것은 필수이다. 단순히 코드를 작성한 파일을 내 컴퓨터에 저장하는 것으로 변경 사항을 저장할 수 있지만,
개발을 하다보면
내 컴퓨터에 저장된 파일을 가지고 위의 모든 것들을 하려고 하면... 상상만 해도 복잡하다.
이 모든 걸 간단하게 할 수 있게 만들어주는 것이 바로 버전 관리 시스템이다.
버전 관리 시스템에는 Git
, CVS
, SVN
, Mercurial
, monotone
등등이 있는데,
그 중에서 Git
은 로컬 버전 관리 시스템이다.
Git
은 거의 대다수의 명령이 로컬에서 이루어져서 네트워크의 다른 컴퓨터는 필요가 없다. 프로젝트의 모든 히스토리를 네트워크의 영향을 받지 않고 내 컴퓨터 안에서 버전 관리를 할 수 있기 때문에 미친듯한 속도를 보여준다. 즉, 오프라인 상태더라도 막힘 없이 일을 할 수 있고 네트워크에 접근하지 못해도 커밋을 날릴 수 있다.
??? : 인터넷이 안된다구요? 없어도 일 하는 데에 지장 없잖아요. 내일까지 가능하시죠?
Git
에서 무언가를 하면 Git
저장소에 데이터가 쌓인다. 되돌리거나 삭제할 수 있는 방법은 없다. 커밋을 하지 않으면 변경 사항을 날릴 수 있지만, 반대로 커밋만 하게 되면 데이터를 변경 사항을 날리고 싶어도 못 날린다. 그래서 Git
을 사용해서 진행하고 있는 프로젝트는 무얼 하든 커밋만 중요한 시점에 날려주면 망쳐도 언제든 커밋한 시점으로 돌아갈 수 있다. 마치 개발자 전용의 타임 머신이라고 생각하면 좋을 듯 하다.
Git
은 로컬 버전 관리 시스템인 만큼, 내 컴퓨터 안에서만 버전 관리를 할 수 있다. 하지만 GitHub
이라는 플랫폼을 이용하면 내 로컬 저장소와 GitHub
의 원격 저장소를 연결하여 사용할 수 있다. 커밋을 해둔 이력들을 원격 저장소로 푸쉬하는 단계만 거치면 바로 원격 저장소에 커밋 이력들이 올라가게 되고, 다른 사람들이 볼 수 있게 또는 없게 하는 것이 가능하다. GitHub
을 사용하면 다른 개발자들과 협업을 할 수도 있고, 내 컴퓨터가 갑자기 박살나거나 데이터 베이스만 쏙 날라가버려도 원격 저장소에서 다시 받아오면 된다.