1. Git이란?

버전 관리 시스템이다.

프로젝트를 다수의 사람들과 협업을 하는 과정에서, 어떤 사람이 어떤 소스를 만들고 변경했는지, 또 코드를 작성하다가 이전에 commit했던 곳으로 돌아가고 싶을 때, 돌아갈 수 있도록 하는 분산버전관리 시스템(=형상관리 도구)이다.

깃이 동작하는 원리는 간단하다.

깃은 항상 사용자가 경로를 명시한 폴더의 파일들을 보고 있다. 모든 파일의 변화를 기록하고 있으며 무엇이 변경되었고 누가 언제 어떤 코드를 변경했는지 기록하는 것이다. (말 그대로 모든 것을 다 기록)

깃은 명령어를 기본으로 한 명령어 프로그램이다.

프로그램에서 커멘드를 사용할 수 있어야 깃을 사용하는 방법을 알 수 있다.

처음 공부를 할 때는, GUI를 사용해서 공부하기보다는 직접 명령어를 공부하고 터미널을 사용해보는 것이 앞으로의 학습 방향에 있어 좋다.

깃의 최강점은 같은 파일에 대해서 마치 타임머신을 타듯이 원하는 버전으로 돌아갈 수 있다는 점이다.

깃이 없었다면, 다른 개발자와 협업할 때, 공통된 파일이 수정될 때 모두가 다같이 수정해야하고 그 과정에서 불필요한 에너지가 낭비될 수 있었지만, 깃을 사용한다면 변경사항을 pull 한 번만으로 적용될 수 있기 때문에 협업 하기에 용이하다.

서로의 변경사항과 충돌하는 일 없이 효율적으로 일할 수 있다.

보통은 GUI tool로 Sourcetree와 GitKraken을 사용한다.(나는 더 직관적으로 보기 좋은 Sourcetree를 사용한다)

Git에서 commit하는 것을 snapshot을 찍는다고 생각하면 된다. 찰칵찰칵. 프로젝트 전체의 현재 상태를 찰칵찰칵.

이 snapshot을 많이 찍는다해서 용량이 크게 늘어나지 않는다.

깃이 없었다면 백업 파일을 매번 압축해서 보관하고, 거기에 따르는 용량은 매우 컸을 것이다.

2. GitHub란?

깃허브는 클라우드에 있는 깃 제공자다.

내 컴퓨터에서 깃 히스토리를 가져와서 깃허브에 push 가능하다.

푸쉬 이전에 이미 있는 레지스토리에서 pull을 땡겨와서 작업을 할 수도 있다.