[Git 설치하기](https://git-scm.com/)
[Git Book](https://git-scm.com/book/ko/v2)
1. Git (깃)
- 정의: 컴퓨터 파일의 변경 사항을 추적하고 여러 사용자 간의 작업을 조율하기 위한 분산 버전 관리 시스템(VCS)
- 역할: 소스코드가 언제, 어떻게, 누구에 의해 수정되었는지 기록(버전 관리)하고, 이전 상태로 되돌리거나(백업), 여러 사람이 동시에 다른 기능을 개발할 수 있도록(브랜치) 도와준다.
- 특징: 인터넷 연결이 없어도 내 컴퓨터(로컬 환경) 내에서 모든 명령을 실행하고 히스토리를 저장할 수 있습니다. 텍스트 명령창(CLI)을 통해 주로 제어
2. GitHub (깃허브)
- 정의: Git으로 관리하는 프로젝트들을 클라우드에 올릴 수 있도록 해주는 웹 기반 호스팅 서비스
- 역할: 내 컴퓨터에만 있던 Git 저장소(Repository)를 인터넷 공간에 업로드하여 다른 사람들과 공유하고 협업 가능
- 특징: Git의 기능 외에도 개발자 간의 커뮤니케이션(이슈 트래커, 풀 리퀘스트), 시각적인 코드 리뷰 환경, 프로젝트 관리 도구 등을 웹 화면으로 편리하게 제공
| 구분 | Git | GitHub |
| 성격 | 내 컴퓨터엥 설치하는 소프트웨어 | 웹 브라우저로 접속하는 클라우드 서비스 |
| 주요 기능 | 로컬 소스코드 버전 관리, 스냅샷 저장 | 원격 저장소 제공, 협업, 코드 공유 |
| 인터넷 연결 | 오프라인에서도 작동 가능 | 반드시 인터넷 연결 필요 |
| 사용자 UI | 주로 명령어(CLI) 기반 | 웹 사이트(GUI) 기반 |
| 핵심 가치 | "내 코드를 안전하게 기록하자" | "기록된 코드를 공유하고 함께 개발하자" |
3. 스냅샷
📸 버전 관리에서의 '스냅샷'이란?
버전 관리 시스템에서 스냅샷은 특정 시점의 파일과 디렉터리 상태를 그대로 사진 찍듯 저장한 데이터를 의미
쉽게 말해, 수정한 파일만 따로 기록하는 것이 아니라 "2026년 7월 19일 20시 정각 기준의 우리 프로젝트 전체 모습"을 하나의 완성된 세트로 저장해 두는 방식
🔄 델타(Delta) 방식 vs 스냅샷(Snapshot) 방식
버전 관리 도구들이 데이터를 저장하는 방식 두 가지
- 델타 방식 (대부분의 구형 VCS): 파일의 '처음 상태'를 두고, 바뀐 부분(수정된 줄, 차이점)만 누적해서 기록. 이전 버전을 보려면 처음부터 끝까지 계산 과정을 거쳐야 한다.
- 스냅샷 방식 (Git): 파일이 변경되면 변경된 파일 전체를 새로 저장하고, 변경되지 않은 파일은 새로 저장하는 대신 이전 버전의 파일을 가리키는 링크만 연결한다.
✨ 스냅샷 방식의 장점
- 속도가 매우 빠르다: 특정 시점으로 되돌아가거나 이전 버전을 조회할 때 계산할 필요 없이, 그 시점의 스냅샷 데이터를 그대로 불러오면 되기 때문에 처리 속도가 압도적으로 빠르다.
- 데이터가 안전하다: 파일 전체의 상태를 기억하고 있기 때문에 프로젝트의 히스토리가 꼬이거나 유실될 위험이 훨씬 적다.
4. VCS
💾 로컬 VCS (Version Control System)
- 개념: 내 컴퓨터(Local) 안에서만 파일의 변경 사항을 기록하는 방식
- 특징: 디렉터리에 버전별로 파일을 복사하거나, 내 컴퓨터 내의 간단한 데이터베이스(예:RCS)에 변경 내용을 저장
- 한계: 작업 디렉터리를 실수로 지우거나 파일 복사를 잘못하면 데이터를 잃기 쉽고, 다른 사람과의 협업이 불가능
🏢 중앙집중식 VCS (CVCS)
- 개념: 파일을 관리하는 중앙 서버가 별도로 존재, 개발자들은 중앙 서버에서 파일을 받아서(Checkout) 사용한 뒤 다시 서버로 보내는 방식 (예: Subversion, CVS, Perforce)
- 특징: 누가 무슨 작업을 하고 있는지 관리자가 한눈에 파악하고 통제하기 쉽다.
- 한계: 중앙 서버가 다운되면 서버가 복구될 때까지 아무도 협업할 수 없고 백업도 불가능. 만약 서버 하드디스크가 깨지면 전체 프로젝트 히스토리를 잃을 수 있다.
🌐 분산 버전 관리 시스템 (DVCS)
- 개념: 중앙 서버가 존재하더라도, 개발자들이 단순히 마지막 스냅샷만 가져오는 것이 아니라 저장소의 히스토리 전체를 통째로 복제(Clone)하여 각자의 컴퓨터에 가지는 방식 (예: Git, Mercurial)
- 특징: 클라이언트의 로컬 저장소가 완벽한 백업 역할을 하므로 서버에 문제가 생겨도 복구가 쉽다. 오프라인에서도 모든 히스토리 조회가 가능하며, 다양한 리모트 저장소를 활용해 유연한 워크플로 제작 가능
5. 최초 설정
Git은 커밋(버전 저장)할 때마다 이 정보를 함께 기록
한 번 커밋된 후에는 작성자 정보를 바꿀 수 없으므로 처음 설정할 때 정확히 입력
- 전역(Global) 설정: 컴퓨터의 모든 프로젝트에 공통으로 적용됩니다.
$ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com - 지역(Local) 설정: 특정 프로젝트(폴더)에서만 다른 이름/이메일을 쓰고 싶다면, 해당 폴더로 이동한 뒤 --global 옵션을 빼고 실행
$ git config user.name "Project Name" $ git config user.email project@example.com
📝 텍스트 편집기(core.editor) 설정
Git에서 커밋 메시지를 적거나 충돌을 해결할 때 사용할 기본 편집기를 지정
설정하지 않으면 시스템 기본 편집기(대개 Vim) 사용
- Emacs 사용 시:
$ git config --global core.editor emacs - Windows에서 Notepad++ 사용 시 (64비트 버전 기준):
$ git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -nosession"
✅ 설정 확인하기
입력한 설정이 잘 적용되었는지 검사하는 방법
- 전체 설정 목록 확인
$ git config --list - 특정 항목만 확인
$ git config user.name
💡 핵심 요약: Git 설정 파일의 3가지 종류
- /etc/gitconfig: 시스템의 모든 사용자와 저장소에 적용 (--system)
- ~/.gitconfig: 현재 로그인한 사용자에게만 적용 (--global)
- .git/config: 현재 작업 중인 특정 프로젝트 저장소에만 적용 (--local)
우선순위는 3번(프로젝트별 설정)이 가장 높고, 중복된 설정이 있다면 가장 나중에 읽은 값으로 덮어씌워집니다.
'FullStack Survival > Git' 카테고리의 다른 글
| [Git] 깃 푸쉬 후 로컬에서만 삭제 (깃허브에는 보존) (0) | 2026.09.28 |
|---|---|
| [Git] 서브 모듈 문제 해결 (중첩 git) (0) | 2026.09.28 |
| [Git] Github 연동 시 주의사항⚠️ (0) | 2026.09.17 |
| [Git] Command (0) | 2026.07.20 |