저장소 복제

GitBeginner
지금 연습하기

소개

이 랩에서는 Git 저장소를 복제하고 몇 가지 고급 복제 옵션을 탐색하는 방법을 배우게 됩니다. Git 은 소프트웨어 개발에서 널리 사용되는 강력한 버전 관리 시스템입니다. 저장소 복제는 원격 저장소의 로컬 복사본을 생성하여 코드 작업을 하고, 변경 사항을 만들고, 다른 사람들과 협업할 수 있게 해주는 기본적인 기술입니다. 이 랩은 초보자를 위해 설계되었으며, 저장소 복제의 실용적인 응용 프로그램에 중점을 두고 단계별로 프로세스를 안내합니다.

원격 저장소 이해 및 기본 저장소 복제

복제를 시작하기 전에, 원격 저장소가 무엇이며 Git 에서 왜 중요한지 이해해 봅시다.

원격 저장소는 인터넷 또는 네트워크 어딘가에 호스팅된 프로젝트의 버전입니다. 모든 사람이 변경 사항을 푸시하고 업데이트를 풀 (pull) 할 수 있는 중앙 집중식 위치를 제공하여 다른 사람들과 협업할 수 있게 해줍니다. 코드용 클라우드 스토리지라고 생각할 수 있지만, 버전 관리의 추가적인 이점이 있습니다.

GitHub는 원격 Git 저장소를 호스팅하는 가장 인기 있는 플랫폼 중 하나입니다. 저장소 관리를 위한 웹 기반 인터페이스와 문제 추적, 풀 요청 (pull request), 프로젝트 관리 도구와 같은 추가 기능을 제공합니다. GitLab 및 Bitbucket 과 같은 다른 유사한 플랫폼도 있습니다.

이제 GitHub 에서 간단한 저장소를 복제해 보겠습니다. 예시로 git-playground 저장소를 사용하겠습니다.

먼저, 로컬 복사본을 저장할 프로젝트 디렉토리로 이동합니다.

cd ~/project

이 명령은 현재 디렉토리를 ~/project로 변경합니다. ~ 기호는 홈 디렉토리를 나타내므로, 이 경로는 일반적으로 /home/yourusername/project로 해석됩니다.

이제 저장소를 복제해 보겠습니다.

git clone https://github.com/labex-labs/git-playground.git

참고: 무료 사용자는 인터넷에 연결할 수 없습니다. 무제한 기능을 사용하려면 Pro 로 업그레이드하세요.

이 명령을 자세히 살펴보겠습니다.

  • git clone은 저장소의 복사본을 생성하는 Git 명령어입니다.
  • https://github.com/labex-labs/git-playground.git는 복제하려는 저장소의 URL 입니다.

이 명령을 실행하면 Git 은 다음을 수행합니다.

  1. 현재 위치 (~/project) 에 git-playground라는 새 디렉토리를 생성합니다.
  2. 이 디렉토리에 새 Git 저장소를 초기화합니다.
  3. 복제한 URL 을 가리키는 "origin"이라는 원격을 설정합니다.
  4. 원격 저장소에서 모든 데이터를 다운로드합니다.
  5. main 브랜치 (일반적으로 "master" 또는 "main"이라고 함) 의 최신 버전의 작업 복사본을 체크아웃합니다.

복제 프로세스가 완료되면 다음과 유사한 출력을 볼 수 있습니다.

Cloning into 'git-playground'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (2/2), done.
remote: Total 9 (delta 1), reused 1 (delta 1), pack-reused 7
Receiving objects: 100% (9/9), done.
Resolving deltas: 100% (1/1), done.

이제 저장소가 성공적으로 복제되었는지 확인해 보겠습니다.

ls -l

이 명령은 현재 디렉토리의 내용을 나열합니다. git-playground라는 새 디렉토리가 표시되어야 합니다.

cd git-playground

이 명령은 현재 디렉토리를 새로 복제된 저장소로 변경합니다.

git status

이 명령은 작업 디렉토리의 상태를 보여줍니다. 현재 브랜치 (아마도 "main" 또는 "master") 와 작업 디렉토리가 깨끗하다는 메시지가 표시되어야 합니다.

축하합니다! 첫 번째 저장소를 복제했습니다. 이 로컬 복사본은 이제 GitHub 의 원격 저장소에 연결되어 업데이트를 가져오거나 (필요한 권한이 있는 경우) 자체 변경 사항을 푸시할 수 있습니다.

저장소를 복제하면 모든 프로젝트 파일과 전체 Git 기록의 완전한 복사본이 제공된다는 점을 기억하세요. 즉, 로컬 머신에서 오프라인으로 프로젝트를 작업하고, 변경 사항을 만들고, 새 브랜치를 생성하는 등 다양한 작업을 수행할 수 있습니다.

복제된 저장소 탐색

이제 저장소를 복제하고 git-playground 디렉토리에 있으므로, 내용을 자세히 살펴보겠습니다.

먼저, 디렉토리의 내용을 살펴보겠습니다.

ls -la

이 명령은 숨겨진 파일을 포함한 모든 파일과 디렉토리를 표시합니다. 이 저장소에 대한 모든 Git 관련 정보가 포함된 .git 디렉토리가 표시되어야 합니다.

다음과 같은 내용을 볼 수 있습니다.

  • 일반 파일 및 디렉토리: 이것은 실제로 작업할 수 있는 프로젝트 파일입니다.
  • .git 디렉토리: 이 숨겨진 디렉토리는 Git 이 모든 추적 정보를 저장하는 곳입니다.
  • .gitignore 파일 (있는 경우): 이 파일은 Git 에게 프로젝트에서 무시할 파일 또는 디렉토리를 알려줍니다.

이제 저장소의 커밋 기록을 확인해 보겠습니다.

git log --oneline

이것은 커밋 기록의 축약된 버전을 보여줍니다. 각 줄은 고유 식별자 (해시) 와 커밋 메시지가 있는 커밋을 나타냅니다.

복제된 저장소의 구조를 이해하는 것은 효과적인 버전 관리에 매우 중요합니다. .git 디렉토리에는 Git 이 버전을 관리하는 데 사용하는 모든 정보가 포함되어 있으며, 다른 파일과 디렉토리는 프로젝트의 현재 상태를 나타냅니다.

이 로컬 저장소와 관련된 원격 저장소도 확인해 보겠습니다.

git remote -v

이 명령은 로컬 저장소에 연결된 원격 저장소를 보여줍니다. 복제한 GitHub URL 을 가리키는 "origin"이 표시되어야 합니다.

origin  https://github.com/labex-labs/git-playground.git (fetch)
origin  https://github.com/labex-labs/git-playground.git (push)

특정 디렉토리로 복제

때로는 저장소를 다른 이름의 디렉토리로 복제하고 싶을 수 있습니다. 이는 프로젝트의 여러 버전으로 작업하거나 디렉토리에 더 설명적인 이름을 지정하려는 경우에 유용합니다.

동일한 저장소를 다시 복제하되, 이번에는 my-project라는 디렉토리로 복제해 보겠습니다.

cd ~/project
git clone https://github.com/labex-labs/git-playground.git my-project

이 명령은 두 가지 작업을 수행합니다.

  1. git-playground 저장소를 복제합니다.
  2. 복제된 파일을 git-playground 대신 my-project라는 새 디렉토리에 넣습니다.

복제 프로세스가 완료되면 다음과 유사한 출력을 볼 수 있습니다.

Cloning into 'my-project'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (2/2), done.
remote: Total 9 (delta 1), reused 1 (delta 1), pack-reused 7
Receiving objects: 100% (9/9), done.
Resolving deltas: 100% (1/1), done.

이 기능은 특히 다음과 같은 경우에 유용합니다.

  • 이미 저장소와 동일한 이름의 디렉토리가 있는 경우
  • 동일한 저장소를 다른 목적으로 여러 번 복제하려는 경우
  • 디렉토리에 로컬 프로젝트 구조의 맥락에서 더 의미 있는 이름을 지정하려는 경우

디렉토리의 이름은 Git 저장소 자체에는 영향을 미치지 않는다는 점을 기억하세요. 이는 로컬 머신의 폴더 이름일 뿐입니다.

새로 복제한 내용물을 확인해 보겠습니다.

cd my-project
ls -la
git remote -v

이러한 명령은 my-project 디렉토리의 내용과 연결된 원격 저장소를 보여줍니다.

깊이 제한 얕은 복제 (Shallow Clone)

때로는 전체 기록 없이 저장소의 최신 버전만 필요한 경우가 있습니다. 이러한 경우 --depth 옵션을 사용하여 얕은 복제 (shallow clone) 를 수행할 수 있습니다.

저장소를 다시 복제하되, 이번에는 최신 커밋만 가져오겠습니다.

cd ~/project
git clone --depth 1 https://github.com/labex-labs/git-playground.git shallow-repo

이 명령은 마지막 커밋으로 잘린 기록을 가진 얕은 복제를 생성합니다. --depth 1 옵션은 Git 에게 최신 커밋만 가져오도록 지시합니다.

얕은 복제는 특히 전체 기록이 필요하지 않은 대규모 저장소의 경우 훨씬 빠르고 디스크 공간을 덜 차지할 수 있습니다.

얕은 복제를 확인하려면 새 디렉토리로 이동하여 git 로그를 확인하십시오.

cd shallow-repo
git log --oneline

로그에서 하나의 커밋만 표시되어야 합니다.

나중에 더 많은 기록이 필요하다고 결정하면 다음을 사용하여 가져올 수 있습니다.

이 명령은 아직 실행하지 마십시오. 그렇지 않으면 확인 단계가 실패합니다.

git fetch --unshallow

이렇게 하면 저장소의 전체 기록이 검색됩니다.

특정 브랜치 복제

때로는 저장소의 특정 브랜치만 복제하고 싶을 수 있습니다. 이는 특정 기능이나 프로젝트 버전에만 관심이 있는 경우에 유용할 수 있습니다.

저장소의 특정 브랜치를 복제해 보겠습니다.

cd ~/project
git clone -b main https://github.com/labex-labs/git-playground.git branch-repo

-b main 옵션은 Git 에게 main 브랜치만 복제하도록 지시합니다. 다른 브랜치를 복제하려는 경우 main을 원하는 브랜치의 이름으로 바꾸십시오.

복제 후, 새 디렉토리로 이동하여 현재 어떤 브랜치에 있는지 확인하십시오.

cd branch-repo
git branch

main 브랜치 (또는 지정한 브랜치) 만 표시되어야 합니다.

이 방법은 특정 브랜치만 필요한 대규모 저장소로 작업할 때 시간과 디스크 공간을 절약할 수 있습니다.

요약

이 랩에서는 Git 저장소를 복제하는 방법과 몇 가지 고급 복제 기술을 살펴보았습니다. 다음 내용을 다루었습니다.

  1. 원격 저장소 (remote repository) 이해 및 기본 저장소 복제
  2. 복제된 저장소의 내용 탐색
  3. 사용자 정의 이름으로 특정 디렉토리에 저장소 복제
  4. 제한된 기록으로 얕은 복제 (shallow clone) 생성
  5. 저장소의 특정 브랜치 (branch) 복제

이러한 기술을 통해 기존 프로젝트를 효율적으로 작업하고, 오픈 소스 소프트웨어에 기여하며, 자체 코드를 보다 효과적으로 관리할 수 있습니다. 기억하세요, 복제는 시작일 뿐입니다. Git 은 버전 관리 및 협업을 위한 훨씬 더 강력한 기능을 제공합니다.

Git 여정을 계속 진행하면서 이러한 다양한 복제 기술이 다양한 시나리오에서 매우 유용하여 시간 절약 및 프로젝트를 보다 효율적으로 관리하는 데 도움이 될 것입니다.