git init
기존 로컬 디렉토리를 Git repository(저장소)로 만들어주는 명령어.
git initLocal repository 를 생성하기 때문에- remote repository 없이 처음 git 으로 버전 관리할 때 사용하는 명령어.
실습
mkdir first-git
cd first-git
git init -b main
ls -al로 확인하면.git디렉토리가 만들어진 것을 확인 가능함: Windows라면 dir /a- 해당 디렉토리(
.git)는 repository(저장소) 에 필요한 뼈대 파일들(skeleton)이 들어있음.
즉, version control 을 위해 필요한 내용들이 저장되는 디렉토리임. - git init -b main 은 기본 브랜치를 main으로 하겠다는 옵션(git 2.28+ 지원)임: 2020년 BLM운동 이후 권장되는 브랜치명임.
- 2005년 git이 개발된 이후 기본 브랜치 명이 master였으나, 2020년 Black Lives Matter 운동 이후 main이 권장되기 시작.
- github등에선 새로운 저장소의 경우 대부분 main으로 만들어지나, PC에 설치하는 도구에선 과거 호환성등을 이유로 main이 아닌 master로 만들어짐.
- 이를 보완하기 위한 옵션이 -b main 임.
- 위의 예에서
first-git은 이제 working tree (or working directory)라고 불리며, 현재 상태의 snapshot을 남길 수 있다.
기존 프로젝트에 참여하는 경우,
git clone을 사용하는 경우도 많음.git clone은 기존의 프로젝트(remote repository가 있는)에 참여하여
기존 프로젝트의 remote repository를 복제할 때 사용됨.
VSCode 예
vscode에서는 버튼 클릭 한번으로 처리됨 (GUI를 이용하는 것도 좋으나 terminal 명령어를 통해 이해하고 있어야 함)
참고로 아래 vscode 예제에선 first-git 이라는 디렉토리 대신 intro_remote_git 이라는 디렉토리에 local repository를 생성함.
중요: Git에서 파일의 (논리적)위치(conceptual location) : Working tree, Stage, Repository
Git 이 version 관리를 할 때, 다음과 같은 3가지 단계(or 논리적인 장소)가 있음.
- Working Tree (or Working Directory)
- 위의 예에서
first-git디렉토리가 바로 working directory이며 - working tree는 .git 을 제외한 것을 가리킴.
- 파일의 수정, 저장 등의 작업이 이루어지는 곳
- 위의 예에서
- Stage Area (or Index)
- taging area라고 불림.
- Version 관리가 될 파일들이 대기하는 논리적인 장소
- 버전 관리가 되고 있는 파일이나 새로 변경된 경우.
- 새로 추가된 파일
- .git/index 에 저장되기 때문에 기술문서 등에선 index라고도 불림:
- index는 Git 내부의 데이터 파일(binary file)로 Staging Area의 정보를 가지고 있음.
- Repository
- Stage에 있던 파일들이
commit을 통해 repository로 이동됨. - Version이 할당되어 관리되는 파일들이 있는 곳.
- Stage에 있던 파일들이
- 이들 중 stage와 repository 를 유지하기 위해 필요한 정보들이
.git디렉토리에 저장됨.
참고로, repository와 stage만 존재하는 저장소(bare repository)를 생성(주로 서버용)하는 것도 가능함: --bare 옵션 사용.
2025.12.01 - [utils/git and github] - git init --bare : 편집가능한 소스 코드가 없는 (서버용) 저장소 만들기
git init --bare : 편집가능한 소스 코드가 없는 (서버용) 저장소 만들기
--bare 옵션은 git init의 옵션으로,"사람이 직접 수정 가능한 코드"를 가지고 있는 repository를 만드는 게 아닌,working directory가 없는코드만 저장해두는 'Server' 역할 의 repository를 만드는 옵션.달리 표
ds31x.tistory.com
Git에서 파일의 life cycle (상태)
Working directory의 파일은 크게 tracked file과 untracked file로 나뉨.
Tracked file은 unmodifed, modifed, staged file로 다시 나누어짐.

git 이 관리하는 파일들은 tracked file임!
원격 저장소와 연결
기존 local repository를 remote repository와 연결하려면 다음(remote add)을 참고
(새로 만드는 경우라면, clone을 보다 권장함)
2024.05.26 - [utils/git and github] - [Git] remote, remote add, remote show: 원격저장소와 연결
[Git] remote, remote add, remote show: 원격저장소와 연결
remote, remote add, remote show: 원격저장소와 연결 git remote add origin : 원격저장소 연결Local repository와 Remote repository를 연결.Remote repository의 단축이름(별칭)을 보통 origin으로 지정.이후, Remote repository url
ds31x.tistory.com
clone으로 원격지 저장소를 로컬로 복제하기 (보다 권장되는 방식)
2024.05.27 - [utils/git and github] - [Git] clone: 원격저장소 복제
[Git] clone: 원격저장소 복제
git clone git clone은 Git 저장소를 복제하는 데 사용되는 명령어임. 원격 저장소의 전체 콘텐츠를 로컬 디렉토리에 복사하여 로컬에서 작업할 수 있게 해줌. 다음의 url에서 설명하는 remote를 통한 연
ds31x.tistory.com
remote repository 대신 bare repository를 사용하여 연습할 수도 있음.
2025.12.01 - [utils/git and github] - git init --bare : 편집가능한 소스 코드가 없는 (서버용) 저장소 만들기
git init --bare : 편집가능한 소스 코드가 없는 (서버용) 저장소 만들기
--bare 옵션은 git init의 옵션으로,"사람이 직접 수정 가능한 코드"를 가지고 있는 repository를 만드는 게 아닌,working directory가 없는코드만 저장해두는 'Server' 역할 의 repository를 만드는 옵션.달리 표
ds31x.tistory.com
같이 보면 좋은 자료들
2024.05.20 - [utils/git and github] - [Git] Git Summary (작성중)
[Git] Git Summary (작성중)
git이란2024.05.20 - [utils/git and github] - Git : 소개 git 설치 후 해줘야 하는 작업들[Git] git 설치 후 우선 해줘야 하는 작업들 (tistory.com)local repository 초기화2024.05.20 - [utils/git and github] - [Git] init : local repo
ds31x.tistory.com
'utils > git and github' 카테고리의 다른 글
| git add (0) | 2024.05.20 |
|---|---|
| git status (0) | 2024.05.20 |
| Git : 소개 (0) | 2024.05.20 |
| [git] git message 확인 방식: pager 사용여부 설정 (0) | 2024.01.30 |
| [Git] tag: 특정 commit 을 가리키는 별명. (1) | 2024.01.01 |