깃 명령어를 통해 깃을 다루기 전에 깃이 어떠한 원리로 돌아가는지 이해해야할 필요가 있습니다.
간단하게 깃의 개념를 설명한다면 위의 이미지로 표현될 것입니다.
- local은 우리가 사용하고 있는 컴퓨터라고 생각하시면 됩니다.
- remote는 원격 저장소라고 생각하시면 됩니다.
- repo는 repository의 준말로서 저장소를 의미합니다.
우리가 지금 사용하고 있는 컴퓨터에 있는 작업 디렉토리를 말합니다.
각자 컴퓨터에서 어떤 파일들을 만들거나, 파일의 내용을 수정하였거나 등등 각자 어떠한 작업을 한 그 디렉토리입니다.
깃은 파일이 추가되고, 삭제되고, 수정되는 등 변경사항을 전부 파악할 수 있습니다.
그리고 우리는 변경사항이 있는 파일들 중 최종적으로 다음 단계인 local repo에 저장할 파일들을 설정할 수 있고, 우리가 설정한 파일들이 staging area에 임시적으로 저장됩니다.
예를 들어, 우리가 파일1과 파일2를 수정하였다고 합시다.
우리는 파일1은 다음 local repo에 저장하고 싶고, 파일2는 수정은 하였지만 지금은 local repo에 저장하고 싶지 않은 상황입니다.
그럴 때 파일1만을 이 과정에서 staging area에 등록하면 깃은 파일1에 대해서는 추적을 시작하게 되고, 파일2는 추적을 하지 않게 됩니다.
local repo는 전 단계인 staging area의 파일들을 최종적으로 우리 컴퓨터에 저장하는 저장소입니다.
local repo는 다음 단계인 remote repo에 저장하기 전 단계입니다.
remote repo는 원격 저장소라는 의미이고, 우리가 사용하기로 정했던 깃허브 저장소가 될 것입니다.
즉, local repo는 원격 저장소에 저장하기 전에 마지막으로(최종적으로) 우리 컴퓨터에 저장되는 저장소가 되는 것입니다.
지금까지 과정을 정리하여 보면, 우리는 working directory에서 파일들을 수정하였고, 그 파일들 중 우리가 원하는 파일들을 임시적으로 staging area에서 파일들을 저장하였습니다.
그리고 그 staging area에 있는 파일들을 대상으로 최종적으로 local repo에 저장하였습니다.
local repo에 있는 파일들을 remote repo에 올리면 끝이 납니다.
원격 저장소에서 우리의 작업 공간으로 가져오는 과정은 위에 설명했던 순서의 역순으로 생각하시면 됩니다.
다만, staging area는 개념 자체가 working directory의 임시 파일들을 모아놓은 것이므로 역순으로 가져올 때에는 보통은 거치지 않습니다.
기본적으로는 위의 깃 개념 이미지에 나오는 깃 명령어들을 보통 사용합니다.
이 외에도 많은 깃 명령어들이 있는 것은 앞서 공부하였듯이 알고 계실 겁니다.
상황에 따라 다른 깃 명령어를 사용할 수도 있습니다.