깃의 핵심기능은 버전관리, 협업, 백업이 있다.
summury
각 버전 별로 변경된 이력들을 저장하는 작업이다. 위의 그림처럼 기능들이 추가되는 변경이력을 저장해 둘 수 있는 것이다.
다시 이전버전으로 돌아가야 하는 상황이 되면 이전 변경이력들이 기록되어 있으니 되돌리기가 가능하다.
따라서 변경사항을 저장할 때는 어떤 사항이 변경되었는지 코멘트를 꼭 작성해야한다. 이때 누가 어떤파일을 추가했고, 수정, 삭제했는지 확인이 가능하다는 중요한 장점이 있다.
또한 Git으로 관리되는 파일은 깃허브같은 여러 원격 저장소를 이용해 백업과 협업을 할 수 있다.
Git이란 개발자의 코드를 효율적으로 관리하기 위해서 개발된 ‘분산형 버전 관리 시스템’ 이다. 버전 관리 시스템의 기본적인 모습은 이 그림과 같다. 이 그림처럼 하나하나 날짜별로 어떤 파일이 어떻게 바뀌었는지 확인이 가능하다. 이렇게 특정 시점에 생성된 백업 복사본을 스냅샷이라고 하는데, 이렇게 하나하나 스냅샷을 만들어 주는 작업을 commit이라고 합니다.
Git은 소스코드 기록을 관리하고 추적할 수 있는 버전관리 시스템이다. Github은 Git Repository를 관리할 수 있는 클라우드 기반 서비스이다.
Github란? git으로 버전관리하는 폴더에 대해서 깃허브를 통해 여러 사람들이 공유하고 접근할 수 있는 개발자들의 SNS라고 할 수 있다.
github에서 code리뷰등을 통해 협업이 가능하고 오픈소스 프로젝트들이 깃허브로부터 호스팅되고 있어서 누구든 자유롭게 사용할 수 있다.
내가 작업하는 소스 코드 폴더가 버전 관리를 받게 하기 위해서는 내 폴더를 Git의 관리 아래에 두어야 한다. Git으로 관리되는 폴더를 Git repository 라고한다. 즉 저장소. 말 그대로 파일이나 폴더를 저장해두는 곳이라고 할 수 있다.
Git repository 는 Remote Repository와 Local Repository 두 종류의 저장소를 제공한다. 작업할 때는 Local Repository에서 할 수 있고 내가 작업한 코드를 공유하려면 Remote Repository에 업로드해 여러 사람이 함께 공유할 수 있다. 다른 사람이 Remote Repository에 올려놓은 소스 코드를 내 Local Repository 로 가지고 올 수도 있다.
오픈소스가 Remote Repository에 올라와 있고 그 해당프로젝트에 contribute(기여하다)하기 위해서는 내 원격 저장소(깃허브)로 가져오는 작업이 필요하다. 그 과정을 Fork라고 한다.
Fork를 하고나면 나의 Remote Repository에 코드가 옮겨지는데 이 코드를 수정하기 위해서는 내 컴퓨터로 가져오는 작업이 필요하다. 이 과정을 클론이라고 한다.
내 컴퓨터에서 소스코드를 변경작업을 마치면 commit을 통해 저장해준 뒤 Remote Repository에 올려주는 작업이 필요하다. 이것을 Push라고 한다. 다시말해 내컴퓨터의 local에 기록해 놓은 commit을 공유가 가능한 remote로 업로드 하는 것이다. 이렇게 push를 완료하고 나면 github에는 pull request라는 기능이 있어서, 내가 제안한 코드 변경사항에 대해 반영 여부를 요청할 수 있다.