git init
이 페이지에서는 git init
명령을 자세히 살펴보겠습니다. 이 페이지를 마치면 git init
의 핵심 기능 및 확장 기능 집합에 대해 알게 됩니다. 여기서는 다음에 대해 살펴봅니다.
git init
옵션 및 사용.git
디렉터리 개요- 사용자 지정
git init
디렉터리 환경 값 git init
및git clone
비교git init
베어 리포지토리git init
템플릿
git init
명령은 새 Git 리포지토리를 만듭니다. 버전이 지정되지 않은 기존 프로젝트를 Git 리포지토리로 변환하거나 비어 있는 새 리포지토리를 초기화하는 데 사용할 수 있습니다. 대부분의 다른 Git 명령은 초기화된 리포지토리 외부에서 사용할 수 없으므로, 보통 이 명령은 새 프로젝트에서 처음 실행하는 명령입니다.
git init
을 실행하면 현재 작업 디렉터리에 .git
하위 디렉터리가 만들어지는데, 여기에는 새 리포지토리에 필요한 모든 Git 메타데이터가 들어 있습니다. 이 메타데이터에는 개체, 참조, 템플릿 파일의 하위 디렉터리가 포함됩니다. 현재 체크아웃된 커밋을 가리키는 HEAD
파일도 만들어집니다.
.git
디렉터리를 제외하고 프로젝트의 루트 디렉터리에서 기존 프로젝트는 변경되지 않은 상태로 유지됩니다. (SVN과 달리 Git에는 모든 하위 디렉터리에서 .git
하위 디렉터리가 필요하지 않습니다.)
기본적으로 git init
은 Git 구성을 .git
하위 디렉터리 경로로 초기화합니다. 다른 위치에 두고 싶으면 하위 디렉터리 경로를 수정하고 사용자 지정할 수 있습니다. $GIT_DIR
환경 변수를 사용자 지정 경로로 설정하면 git init
이 거기서 Git 구성 파일을 초기화합니다. 또한 동일한 결과에 대해 --separate-git-dir
인수를 전달할 수도 있습니다. 별도의 .git
하위 디렉터리에 대한 일반적인 사용 사례는 시스템 구성 "dotfiles"(.bashrc
, .vimrc
등)를 홈 디렉터리에 유지하면서 .git
폴더는 다른 위치에 유지하는 것입니다.
관련 자료
Git 브랜치
솔루션 보기
Bitbucket Cloud에서 Git에 대해 알아보기
사용
SVN에 비해 git init
명령은 새 버전 제어 프로젝트를 만드는 매우 쉬운 방법입니다. Git에서는 리포지토리를 만들고, 파일을 가져오고, 작업 복사본을 체크아웃할 필요가 없습니다. 게다가 Git에서는 사전에 있는 기존 서버 또는 관리자 권한도 필요 없습니다. 프로젝트 하위 디렉터리에 cd를 넣고 git init
을 실행하기만 하면 완벽한 기능을 수행하는 Git 리포지토리를 얻을 수 있습니다.
git init
현재 디렉터리를 Git 리포지토리로 변환합니다. 이렇게 하면 .git
하위 디렉터리가 현재 디렉터리에 추가되고 프로젝트의 수정본 기록을 시작할 수 있습니다.
git init <directory>
지정된 디렉터리에 빈 Git 리포지토리를 만듭니다. 이 명령을 실행하면 .git
하위 디렉터리만 포함하는 <directory>라는 새 하위 디렉터리가 만들어집니다.
이미 프로젝트 디렉터리에서 git init
을 실행한 적 있고 거기에 .git
하위 디렉터리가 포함되어 있다면 동일한 프로젝트 디렉터리에서 안전하게 git init
을 다시 실행할 수 있습니다. 기존 .git
구성을 재정의하지 않습니다.
git init 및 git clone 비교
간단한 참고 사항: git init
및 git clone
은 쉽게 혼동할 수 있습니다. 상위 수준에서는 둘 다 "새 git 리포지토리 초기화"에 사용할 수 있습니다. 하지만 git clone
은 git init
에 종속됩니다. git clone
은 기존 리포지토리의 복사본을 만드는 데 사용됩니다. 내부적으로 git clone
은 새 리포지토리를 만들기 위해 git init
을 먼저 호출합니다. 그런 다음, 기존 리포지토리의 데이터를 복사하고 새 작업 파일 집합을 체크아웃합니다. git clone 페이지에서 자세히 알아보세요.
베어 리포지토리 --- git init --bare
git init --bare <directory>
빈 Git 리포지토리를 초기화하지만 작업 디렉터리는 생략합니다. 공유 리포지토리는 항상 --bare
플래그와 함께 만들어야 합니다(아래 설명 참조). 기존에는 --bare
플래그로 초기화된 리포지토리가 .git
으로 끝납니다. 예를 들어 my-project
라는 리포지토리의 베어 버전은 my-project.git
이라는 디렉터리에 저장해야 합니다.
--bare
플래그는 작업 디렉터리가 없는 리포지토리를 만드므로, 해당 리포지토리에서 파일을 편집하고 변경 사항을 커밋하는 것이 불가능합니다. git push 및 git pull이 가능한 베어 리포지토리를 만들겠지만, 직접 커밋할 수는 없습니다. 중앙 리포지토리는 항상 베어 리포지토리로 만들어야 합니다. 브랜치를 베어 리포지토리가 아닌 리포지토리로 푸시하면 변경 사항을 덮어쓸 가능성이 있기 때문입니다. --bare
가 리포지토리를 개발 환경이 아니라 저장 시설로 표시하는 방법이라고 생각해 보세요. 즉, 사실상 모든 Git 워크플로에서 중앙 리포지토리는 베어이고 개발자의 로컬 리포지토리는 베어가 아니란 뜻입니다.
git init --bare
의 가장 일반적인 사용 사례는 원격 중앙 리포지토리를 만드는 것입니다.
ssh <user>@<host> cd path/above/repo git init --bare my-project.git
먼저 중앙 리포지토리를 포함할 서버로 SSH를 수행합니다. 그런 다음, 프로젝트를 저장할 위치로 이동합니다. 마지막으로 --bare
플래그를 사용하여 중앙 저장 공간 리포지토리를 만듭니다. 그러면 개발자가 my-project.git
을 복제하여 자신의 개발 컴퓨터에 로컬 복사본을 만들면 됩니다.
git init 템플릿
git init <directory> --template=<template_directory>
새 Git 리포지토리를 초기화하고 <template_directory>
에서 리포지토리로 파일을 복사합니다.
템플릿을 사용하면 미리 정의된 .git
하위 디렉터리로 새 리포지토리를 초기화할 수 있습니다 . 새 리포지토리의 .git
하위 디렉터리에 복사되는 기본 디렉터리와 파일을 포함하도록 템플릿을 구성할 수 있습니다 . 기본 Git 템플릿은 보통 '/usr/share/git-core/templates'
디렉터리에 있지만 사용자의 컴퓨터에 따라 경로가 다를 수 있습니다.
기본 템플릿은 템플릿 기능을 활용하는 방법에 대한 좋은 참조 자료이자 예시입니다. 기본 템플릿에서 제공하는 강력한 템플릿 기능은 Git Hook 구성입니다. 미리 정의된 Git 후크로 템플릿을 만들고 바로 사용할 수 있는 일반 후크를 사용하여 새 git 리포지토리를 초기화할 수 있습니다. Git 후크 페이지에서 Git 후크에 대해 자세히 알아보세요.
구성
git init <directory> --template=<template_directory>
git init
의 모든 구성은 <directory>
인수를 가져옵니다.
를 입력하면 그 안에서 명령이 실행됩니다. 이 디렉터리가 없는 경우 새로 만들어집니다. 앞에서 설명한 옵션 및 구성 외에도 Git init
에는 몇 가지 명령줄 옵션이 있습니다. 전체 목록은 다음과 같습니다.
-Q
--QUIET
"중요 수준" 메시지, 오류, 경고만 인쇄합니다. 다른 모든 출력은 표시하지 않습니다.
--BARE
베어 리포지토리를 만듭니다. (위의 "베어 리포지토리" 섹션을 참조하세요.)
--TEMPLATE=
템플릿이 사용될 디렉터리를 지정합니다. (위의 "Git Init 템플릿" 섹션을 참조하세요.)
--SEPARATE-GIT-DIR=
로의 경로가 포함된 텍스트 파일을 만듭니다. 이 파일은 .git
디렉터리에 대한 링크 역할을 합니다. 프로젝트의 작업 파일과 별도의 위치 또는 드라이브에 .git
디렉터리를 저장하려는 경우에 유용합니다. --separate-git-dir
의 일반적인 사용 사례는 다음과 같습니다.
- 시스템 구성 "dotfiles"(
.bashrc, .vimrc
등)를 홈 디렉터리에 유지하면서.git
폴더는 다른 위치에 유지 - Git 기록의 디스크 크기가 매우 커지면 별도의 대용량 드라이브로 이동
'www:root'
와 같이 공개적으로 액세스할 수 있는 디렉터리에 Git 프로젝트를 넣으려는 경우
기존 리포지토리에서 git init --separate-git-dir
를 호출하면 .git dir
가 지정된
경로로 이동합니다.
--SHARED[=(FALSE|TRUE|UMASK|GROUP|ALL|WORLD|EVERYBODY|0XXX)]
새 리포지토리에 대한 액세스 권한을 설정합니다. 이것은 Unix 수준 권한을 사용하는 사용자 및 그룹 중 리포지토리에 대한 푸시/풀이 허용되는 대상을 지정합니다.
예제
기존 코드베이스용 새 git 리포지토리 만들기
cd /path/to/code \
git init \
git add . \
git commit
새 베어 리포지토리 만들기
git init --bare /path/to/repo.git
git init 템플릿을 만들고 템플릿에서 새 git 리포지토리 초기화
mkdir -p /path/to/template \
echo "Hello World" >> /absolute/path/to/template/README \
git init /new/repo/path --template=/absolute/path/to/template \
cd /new/repo/path \
cat /new/repo/path/README
이 문서 공유
다음 토픽
여러분께 도움을 드릴 자료를 추천합니다.
이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.