
Git을 사용하다보면 다양한 용어들이 많이 나오는데, Git을 잘 사용하기 위해서는 각 용어들의 뜻을 정확히 이해하고 사용해야 한다.
이에, 이번 글에서는 Git이란 무엇인지부터 Git을 사용하기 위해 알아야하는 기본 용어들에 대해서 정리하며 학습해보고자 한다.
Git은 코드 버전 관리를 할 수 있는 대표적인 프로그램이다. 여기서 버전 관리란, 파일의 변화를 시간에 따라서 기록했다가 나중에 특정 시점에 버전을 다시 꺼내올 수 있는 시스템을 말한다.
버전 관리를 하면 다양한 이점을 취할 수 있는데, 먼저 버전 관리를 하게 되면 프로그램의 진짜 최종본을 만들기까지 어떤 과정을 거쳤는지 확인 가능하다. 두 번째, 어딘가 잘못된 부분이 생기면 이전 버전으로 돌아갈 수 있게 해준다.
또한, Git은 여러 개발자들이 협업할 수 있게 해주는 기능도 제공한다. 따라서 정리해보자면, Git은 버전 관리와 동시 협업을 가능하게 해주는 툴이라고 정의 가능하다.
GitHub는 Git을 사용하는 프로젝트를 지원하는 웹호스팅 서비스이다.
GitHub는 원격 저장소를 대신 제공해주는 서비스로, Github를 사용하면 외부 컴퓨터를 따로 마련하지 않아도 작업한 내용을 자신의 컴퓨터가 아닌 다른 곳에 저장 가능하게 해준다.
Git / Github 정리
- Git(깃): 버전 관리 시스템
- GitHub(깃허브): Git으로 관리하는 프로젝트를 올려둘 수 있는 사이트
Repository는 우리말로 저장소라는 뜻으로, Git repository는 Git으로 관리하는 프로젝트 저장소이다.
Git을 쓰면 프로젝트 디렉토리 안에 .git이라고 하는 디렉토리가 만들어지는데, 프로젝트의 변경 사항들이 저장되어 있는 바로 이 .git 디렉토리가 레포지토리이다.
Remote Repository vs Local Repository
- Remote Repository: 깃허브의 Repository, 원격 Repository라고도 함
- Local Repository: 내 컴퓨터의 Repository
프로젝트 디렉토리의 모습을 하나의 버전으로 남기는 동작을 '커밋 한다'라고 표현한다. 커밋을 하면 커밋하는 당시의 프로젝트 디렉토리 모습이 마치 사진처럼 레포지토리에 저장된다. 이때 그 고정된 결과물 자체를 커밋이라고 한다.
레포지토리에 저장된 커밋을 나중에 참조하면 과거의 프로젝트 디렉토리의 모습을 볼 수 있게 되는데, 이런 커밋을 통해서 Git 내에서 버전 관리를 할 수 있게 되는 것이다.
주의점으로, 커밋을 하기 전에는 커밋 할 파일들을 미리 지정해줘야 한다는 점도 잊지말자.
Commit / Repository 정리
- Commit(커밋): 프로젝트 디렉토리의 특정 모습을 하나의 버전으로 남기는 행위와 그 결과물을
- Repository(레포지토리): 커밋이 저장되는 곳이 레포지토리이다.
커밋을 하기 전에는 커밋 할 파일들을 미리 지정해줘야 한다. 이 때 나오는 개념이 'git add'이다.
add란 수정된 파일의 모습이 커밋에 포함될 것이라고, 커밋할 파일을 지정하는 것을 의미한다.
Git에서 원격 레포지토리(remote repository)를 추가하고자 할 때, 우리는 다음과 같은 명령어를 사용한다:
git remote add origin [레포지토리 주소]
이 명령어는 해당 주소의 원격 레포지토리를 origin이라는 이름으로 등록하는 명령으로, origin은 Git에서 원격 레포지토리의 기본적인 이름으로 관례적으로 사용되며, 이는 프로젝트의 '원점'이나 '출발점'을 의미한다.
대부분의 Git 사용자 사이에서는 origin이라는 용어가 널리 채택되어 있으니, 되도록이면 origin을 사용하는 것을 권장한다.
로컬 레포지토리와 원격 레포지토리에는 각각 main이라는 이름의 브랜치가 있을 수 있다. 이 때, 로컬에서는 단순히 main이라고 부르지만, 원격 레포지토리의 main 브랜치는 origin/main으로 참조한다.
원격 레포지토리의 master 브랜치 상태는 git fetch 명령을 사용하여 로컬로 가져온 후 git branch -r 또는 git status 명령으로 확인할 수 있다.
만약 origin/master가 로컬의 master보다 뒤쳐져 있다면, 이는 로컬에서의 커밋이 아직 원격 레포지토리에 푸시되지 않았음을 의미하는 것이다.
Git 용어들에 대한 정확한 이해로 Git을 더욱 잘 다루며 버전관리와 협업 능력을 쌓아보자.
추가적으로, Git을 이해하기 위해 필요한 추가적인 용어가 생길 때마다 본 페이지에 계속해서 추가해가며 용어에 대한 개념정리를 이어가보자.