Git 시작하기: 저장소 초기화 및 복제

git init 또는 git clone을 사용해야 하는 시점을 배우고, 첫 커밋 전에 원격 저장소, 브랜치, 사용자 정보, 무시된 파일을 확인하는 방법을 알아봅니다.

Git 시작하기: 저장소 초기화 및 복제

저장소 초기화와 복제는 Git 작업을 시작하는 두 가지 기본 방법입니다. 기존 폴더를 Git 저장소로 전환하거나, 기존 저장소를 복사하여 파일과 히스토리를 작업할 수 있습니다.

이 명령어들은 단순해 보이지만, 초기 선택이 원격 저장소, 브랜치, 무시된 파일, 팀 워크플로우에 영향을 미칩니다. 깔끔한 설정은 나중에 발생할 혼란을 방지합니다.

Git 저장소의 구성 요소

Git 저장소는 숨겨진 .git 디렉토리를 포함하는 프로젝트 폴더입니다. 이 .git 디렉토리는 커밋 히스토리, 브랜치 참조, 원격 저장소 정보, 설정, Git의 내부 객체 데이터베이스를 저장합니다.

일반적으로 .git 파일을 직접 편집하지 않습니다. Git 명령어를 사용하면 Git이 내부 데이터를 자동으로 업데이트합니다.

폴더가 이미 저장소인지 확인하려면 다음을 실행하세요:

git status

Git이 폴더가 저장소가 아니라고 표시하면 초기화할 수 있습니다. 브랜치, 변경된 파일 또는 깨끗한 작업 트리를 표시하면 Git이 이미 해당 폴더를 추적하고 있는 것입니다.

세 가지 주요 영역을 이해하는 것이 도움이 됩니다:

  • 작업 트리: 보고 편집할 수 있는 파일.
  • 스테이징 영역: 다음 커밋을 위해 선택된 변경 사항.
  • 저장소 히스토리: Git이 이미 기록한 커밋.

저장소를 초기화하거나 복제하면 Git이 이러한 요소를 설정하여 커밋을 시작할 수 있게 합니다.

새 저장소 초기화

git init은 아직 Git으로 추적되지 않는 로컬 프로젝트 폴더가 있을 때 사용합니다.

폴더를 만들고 초기화하세요:

mkdir my-app
cd my-app
git init

Git이 숨겨진 .git 디렉토리를 생성합니다. 이제 파일을 추가하고 첫 번째 커밋을 만들 수 있습니다:

echo "# My App" > README.md
git add README.md
git commit -m "Add README"

기본 브랜치 이름을 main으로 설정하려면 새 저장소를 만들기 전에 전역으로 설정할 수 있습니다:

git config --global init.defaultBranch main

또는 초기화 후 현재 브랜치 이름을 변경할 수 있습니다:

git branch -M main

실제 프로젝트의 경우, 첫 번째 광범위한 커밋 전에 .gitignore를 만드세요. 이렇게 하면 의존성 폴더, 빌드 출력물, 로그, 로컬 비밀 정보가 히스토리에 포함되는 것을 방지합니다:

node_modules/
dist/
.env
*.log

파일이 커밋된 후에 .gitignore에 추가해도 히스토리에서 제거되지 않습니다. 따라서 초기 무시 규칙이 중요합니다.

저장소를 호스팅 서비스에 게시할 계획이라면, 먼저 빈 원격 저장소를 생성한 후 연결하세요:

git remote add origin [email protected]:example/my-app.git
git push -u origin main

-u 옵션은 업스트림 추적을 설정합니다. 이후에는 단순히 git pushgit pull로 어떤 원격 브랜치를 사용할지 알 수 있습니다.

기존 저장소 복제

git clone은 저장소가 다른 곳에 이미 존재할 때 사용합니다. 복제는 프로젝트 파일, 히스토리, 원격 저장소 설정을 복사합니다.

기본 명령어는 다음과 같습니다:

git clone [email protected]:example/my-app.git

Git은 저장소 이름을 딴 폴더를 생성합니다. 다른 로컬 폴더 이름을 지정하려면 끝에 추가하세요:

git clone [email protected]:example/my-app.git worktree-app

복제 후 폴더로 이동하여 확인하세요:

cd worktree-app
git status
git remote -v
git branch

기본적으로 원격 저장소 이름은 보통 origin입니다. 이 이름은 관례적이며 특별한 의미는 없습니다. 이는 Git이 가져오기 및 푸시에 사용할 URL을 가리킵니다.

HTTPS 또는 SSH 복제 URL을 볼 수 있습니다. HTTPS는 특히 공개 저장소의 경우 시작하기 쉽습니다. SSH는 키를 사용하고 올바르게 설정하면 반복적인 비밀번호 입력을 피할 수 있어 일상적인 개발에 일반적입니다.

대규모 저장소의 경우 얕은 복제를 사용할 수 있습니다:

git clone --depth 1 https://example.com/repo.git

이렇게 하면 최근 히스토리만 다운로드합니다. CI 작업이나 빠른 검사에 유용하지만, 오래된 커밋, 태그 또는 전체 히스토리가 필요한 명령어를 제한할 수 있습니다. 일반적인 개발에는 전체 복제가 더 좋습니다.

저장소가 서브모듈을 사용하는 경우 다음으로 복제하세요:

git clone --recurse-submodules [email protected]:example/platform.git

또는 복제 후 초기화할 수 있습니다:

git submodule update --init --recursive

서브모듈은 저장소 관리의 또 다른 계층을 추가하므로, 변경하기 전에 프로젝트의 설정 문서를 읽어보세요.

설정 후 일반적인 첫 번째 확인 사항

초기화 또는 복제 후 코딩을 시작하기 전에 몇 가지 확인을 실행하세요. 초기에 잘못된 설정을 발견하는 데 도움이 됩니다.

사용자 정보 확인:

git config user.name
git config user.email

회사 저장소인 경우 이메일이 회사 계정과 일치하는지 확인하세요. 로컬로 설정할 수 있습니다:

git config --local user.email "[email protected]"

원격 저장소 확인:

git remote -v

가져오기 및 푸시 URL이 예상한 저장소를 가리키는지 확인하세요. 실수로 포크나 개인 미러에 푸시하면 시간을 낭비할 수 있습니다.

현재 브랜치 확인:

git branch --show-current

저장소를 복제했다면 브랜치를 만들기 전에 README나 기여 가이드를 읽어보세요. 많은 팀에서 feature/ticket-123-short-description 또는 fix/login-timeout과 같은 브랜치 이름을 기대합니다.

첫 번째 커밋 전에 무시된 파일을 확인하세요:

git status --ignored

이것은 빌드 아티팩트와 로컬 비밀 파일이 커밋되지 않도록 빠르게 확인하는 방법입니다.

도움을 요청해야 할 때

어떤 원격 URL을 사용해야 할지, 포크를 복제해야 할지 메인 저장소를 복제해야 할지, 서브모듈을 어떻게 처리해야 할지 확실하지 않다면 팀원이나 저장소 관리자에게 도움을 요청하세요.

또한 잘못된 디렉토리에서 Git을 초기화한 경우 멈춰야 합니다. 예를 들어, 홈 폴더에서 git init을 실행하면 Git이 수천 개의 관련 없는 파일을 볼 수 있습니다. 무작정 삭제하지 마세요. .git이 생성된 위치를 확인하고, 필요한 히스토리가 없다고 확신하는 경우에만 잘못된 저장소 메타데이터를 제거하세요.

Git을 시작하는 것은 주로 깔끔한 습관에 관한 것입니다. 새 로컬 프로젝트에는 git init을, 기존 저장소에는 git clone을 사용하고, 본격적인 작업을 시작하기 전에 브랜치, 원격 저장소, 사용자 정보, 무시된 파일을 확인하세요.