개발자 필수 지식 Git이 뭔데?
Git의 기본 개념부터 시작해, 왜 Git이 개발자 협업에서 필수적인 도구인지까지 쉽고 명확하게 알려드립니다.
Jan 03, 2024
Git이란?
Git이란 버전 관리 시스템(Version Control System, VCS) 이다. 2005년 출시 이후에 아래와 같은 5가지의 초기 목표를 잃지 않고 현재까지 운영하고 있어요.
- 빠른 속도
- 단순한 구조
- 비선형적인 개발(수천 개의 동시다발적인 브랜치)
- 완벽한 분산
- Linux 커널 같은 대형 프로젝트에도 유용할 것(속도나 데이터 크기 면에서)
(참고✔️ 깃 공식 강의를 통해 git에 대해 더 자세히 알 수 있어요.)
Git을 사용하는 이유
Git을 이용하면 쉬운 버전 관리가 가능해요. 프로젝트를 진행하면 잦은 업데이트가 필수적인데, 프로젝트를 업데이트할 때마다 따로 저장하는 것이 아닌, Git으로 버전 관리가 가능해요. 쉽게 이전 버전으로 돌아가는 과정도 간단해요.
여러 개발자들의 협업 시에 한 코드를 가지고 병렬적으로 진행하는 것을 가능하게 해줘요.
Git은 분산 버전 관리 시스템이기 때문에 중앙 서버가 없어도 프로젝트 파일을 저장, 공유할 수 있어요.
Git이랑 Github 차이점?
한 마디로 정리하자면, Git(깃)은 버전 관리 시스템이고, GitHub(깃허브)는 Git으로 관리하는 프로젝트를 올려둘 수 있는 사이트예요. Git으로 관리하는 프로젝트를 올려둘 수 있는 대표적인 Git 호스팅 사이트 중 하나가 바로 GitHub예요.
GitHub에 소스 코드를 올려 두면 시간, 공간의 제약 없이 협업할 수 있어요. 또한 프로젝트를 공개 저장소인 오픈소스로 만들면 전 세계의 개발자들과 협업이 가능해요. 누구든지 기여할 수 있는 오픈 소스를 통해 의견을 공유하고 나눌 수 있어요. Git은 로컬에서 작업하지만, Github는 클라우드를 이용해 소스들을 관리해요.
또한 GitLab(깃랩)은 수많은 기업에서 보안성을 중시하는 프로그램 코드를 올려 함께 협업하는 툴이예요. 현재 NASA, 우아한형제들, 카카오뱅크 등 보안이 필요한 대기업에서 많이 사용하고 있어요.
Git 기본 용어 정리
- Repository(저장소): 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳이에요. 소스코드들이 저장되어 있는 물리적인 공간을 의미해요. 저장소에는 로컬 저장소 (Local Repository)와 원격 저장소 (Remote Repository) 2가지 종류가 있어요.
- Working Tree : 현재 파일 수정, 저장 등의 작업을 하는 디렉터리를 말해요.
- Index (= Staging Area) : Commit을 실행하기 전의 저장소와 Working tree 사이에 존재하는 공간을 말해요. 저장소에 커밋하기 전에 커밋을 준비하는 위치예요.
- Head: 현재 작업중인 브랜치를 말해요.
- Snapshot: 특정 시점에서 파일, 폴더 또는 워크스페이스의 상태를 의미해요.
- Commit : 변경된 작업 과정들에 대한 점검을 마치고 저장소에 남기는 작업을 의미해요.
- Checkout : 특정 시점이나 branch의 소스 코드로 이동하는 것을 의미해요. 이전 버전 작업을 불러오는데 많이 사용해요.
- Branch : Commit 단위로 구분된 소스 코드 타임라인에서 분기점을 의미해요. Branch에서 작업을 완료하면, Merge 작업을 수행할 수 있어요.
- Merge : Branch와 Branch의 내용을 합치는 작업인 병합을 말해요.
Git local, remote 개념
- 로컬 저장소 (Local Repository)
- 로컬 저장소는 개발자의 컴퓨터 내에 위치한 저장소예요.
- 프로젝트 디렉토리 내에
.git
이라는 숨겨진 폴더가 생성되며, 이 폴더에 변경 이력, 브랜치, 설정 등이 저장돼요. - 로컬 저장소는 개발자가 프로젝트를 관리하고 수정할 때 사용하고 있어요.
- 원격 저장소 (Remote Repository)
- 원격 저장소는 인터넷이나 네트워크 상의 다른 위치에 위치한 저장소예요.
- GitHub, GitLab, Bitbucket 등에 프로젝트를 업로드하고 공유하기 위해 사용돼요.
- 여러 개발자가 협업할 때 중앙 저장소의 역할을 하며, 여러 사용자 간에 코드를 공유하고 동기화하는 데 사용해요.
로컬 저장소와 원격 저장소 간의 주요 차이점은 다음과 같아요.
- 저장 위치
- 로컬 저장소는 개발자의 컴퓨터에 있고, 프로젝트 디렉토리 내에 있어요.
- 원격 저장소는 네트워크 상의 다른 위치(예: GitHub 서버)에 위치하고 있어요.
- 저장 목적
- 로컬 저장소는 주로 개발자가 코드를 수정하고 변경 이력을 관리하기 위해 사용해요.
- 원격 저장소는 여러 개발자가 협업하고 코드를 공유하며, 프로젝트를 백업하고 외부에 배포하기 위해 사용해요.
- 저장 내용
- 로컬 저장소는 개발자의 작업 디렉토리와 Git 이력을 포함해요.
- 원격 저장소는 로컬 저장소의 특정 시점을 포함하며, 다수의 사용자 간에 코드 공유 및 협업을 지원해요.
Git의 3가지 작업 영역
Git은 내부적으로 크게 3가지 종류의 작업 영역을 두고 동작해요.
각 작업 영역의 이름은 아래와 같아요.
- working directory
- staging area
- repository
첫 번째 작업 영역인 working directory는 작업을 하는 프로젝트 디렉토리를 말해요. 그러니까 지금 상황에서는 MathTool 디렉토리가 working directory이에요.
두 번째 작업 영역인 staging area는 git add를 한 파일들이 존재하는 영역이에요. 커밋을 하게 되면 staging area에 있는 파일들만 커밋에 반영돼요.
세 번째 작업 영역인 repository는 working directory의 변경 이력들이 저장되어 있는 영역입니다. 커밋들이 저장되는 영역이라는 뜻인데요,
- working directory에서 특정 작업을 진행하고,
- 작업한 파일들을 git add 해주고,
- 커밋을 하면 staging area에 있던 파일들의 변경사항이 해당 repository에 저장되는 거예요.
(참고: gitc-scm 공식 페이지)
🔽 아래에서 뉴스레터를 구독하고, IT커리어 팁을 쉽게 받아 보세요!
Share article