본문 바로가기
목차
utils/git and github

git init : local repository 생성.

by ds31x 2024. 5. 20.
728x90
반응형

git init

기존 로컬 디렉토리를 Git repository(저장소)로 만들어주는 명령어.

  • git init Local 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를 생성함.

https://youtu.be/OK0qrCipF6s


중요: 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이 할당되어 관리되는 파일들이 있는 곳.
  • 이들 중 stagerepository 를 유지하기 위해 필요한 정보들이 .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 fileuntracked 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


 

728x90

'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