Git 과 GitHub 는 다르다
Git 은 분산형 버전 관리 시스템 (VCS) 이다.
GitHub 는 Git 을 기반으로 한 클라우드 호스팅 서비스 이다.
우리가 깃헙, 깃허브 라고 말하는것은 '깃을 기반으로 편의서비스를 제공하는 업체' 이름인것 뿐이다.
따라서 여러사람과 협업을 하기위해 GitHub 을 사용하려면 Git 을 잘알아야 한다.
버전 관리란?
버전 관리 시스템은 파일변화를 시간에 따라 기록했다가 나중에 특정시점의 버전을 다시 꺼내올 수 있는 시스템이다.
- 각 파일을 이전 상태로 되돌릴 수 있다.
- 프로젝트를 통째로 이전 상태로 되돌릴 수있다.
- 시간에 따라 수정 내용을 비교해 볼 수있다.
- 누가 문제를 일으켰는지도 추적할 수있다.
- 누가 언제 만들어낸 이슈인지도 알 수있다.
- 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수있다.
Git 작동 구조
- 내가 작업한것을 (로컬저장소)
- 원격저장소로 밀어내거나 (push)
- 원격저장소 에서 최신 형상을 내 작업공간(로컬)으로 당겨온다 (pull)
Git 기본 용어
Repository
스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳이다.
Git은 원격 저장소와 로컬 저장소 두 종류의 저장소를 제공한다.
원격 저장소(Remote Repository)
파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소다.
로컬 저장소(Local Repository)
내 PC에 파일이 저장되는 개인 전용 저장소다.저장소를 만드는 방법은 두 가지가 있다.
아예 저장소를 새로 만들거나, 이미 만들어져 있는 원격 저장소를 로컬 저장소로 복사해 올 수 있다.
스테이지 내용은 .git/index 파일에 저장되고, 저장소의 내용은 .git/HEAD 파일에 저장된다.
Working Tree (Working Directory)
저장소를 어느 한 시점을 바라보는 작업자의 현재 시점.
파일 수정, 저장 등의 작업을 하는 디렉터리로, '작업 디렉터리(working directory)'라고도 한다.
SnapShot
특정 시점에서 파일, 폴더 또는 워크스페이스의 상태를 의미.
스냅샷을 통해 특정 시점에 어떤 파일에 어떤 내용이 기록되어 있었는지, 폴더 구조는 어떠했는지, 어떤 파일이 존재했는지 등 저장소의 모든 정보를 확인할 수 있다.
Git에서는 새로운 버전을 기록하기 위한 명령인 커밋(commit)을 실행하면 스냅샷이 저장된다
- 개발자는 작업 디렉토리에 있는 파일을 수정
- 수정된 파일을 모아 정리하여 만든 Snapshot을 Staging 디렉토리에 추가하고 저장
- GIT 디렉토리에 저장 (Staging 디렉토리에 저장된 파일을 앞으로 영구 불변의 상태를 유지하는 Snapshot 으로서 git 디렉토리에 저장하는 것)
Checkout
이전 버젼 작업을 불러오는것.
Staging Area
저장소에 커밋하기 전에 커밋을 준비하는 위치.
예를 들어 작업 트리에서 10개의 파일을 수정했는데 4개의 파일만 버전으로 만들려면 4개의 파일만 스테이지로 넘겨주면 된다. 즉, 로컬 스테이지에 올려둔 파일만 원격 저장소에 커밋할 자격이 있는 것이다.
Commit
현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업.
Head
현재 작업중인 Branch를 가리킨다.
Branch
가지 또는 분기점을 의미하며, 작업을 할때에 현재 상태를 복사하여 Branch에서 작업을 한 후에 완전하다 싶을때 Merge를 하여 작업을 한다.
Merge
다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업을 의미한다.
GitHub vs GitLab
깃허브는 세계최대 규모의 Git 저장소로, 무료 서버저장소를 지원하기때문에
초급 ~ 고급 개발자 모두 이용하며 수많은 개인 개발자들, 팀개발자들이 이용하는 서비스이다.
깃허브는 무료로 이용하는대신 자신의 소스코드가 오픈되어 수많은 사람들이 보며 활용가능하고,
익명의 개발자와 함께 작업할수 있도록 하여 프로그래밍을 더욱 확산시켜주는 환경으로 자리매김했다.
반면 GitLab (깃랩) 은 수많은 기업에서 보안성을 중시하는 프로그램 코드를 올려 함께 협업하는 툴로,
사용자가 기업들이되며, 자신의 서버에 설치하여 서버내 프라이빗한 Git 원격 저장소를 만들수 있는 서비스이다.
'Git' 카테고리의 다른 글
[Git] 핵심 명령어 요약 (1) | 2024.12.21 |
---|---|
[Git] branch 와 merge (1) | 2024.12.21 |
[Git] 원격 저장소 연동 - git remote / push / pull / clone (3) | 2024.12.21 |
[Git] 버전관리하기 - git.init / add / status / commit / log (1) | 2024.12.21 |