소개
이 랩에서는 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 은 다음을 수행합니다.
- 현재 위치 (
~/project) 에git-playground라는 새 디렉토리를 생성합니다. - 이 디렉토리에 새 Git 저장소를 초기화합니다.
- 복제한 URL 을 가리키는 "origin"이라는 원격을 설정합니다.
- 원격 저장소에서 모든 데이터를 다운로드합니다.
- 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
이 명령은 두 가지 작업을 수행합니다.
git-playground저장소를 복제합니다.- 복제된 파일을
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 저장소를 복제하는 방법과 몇 가지 고급 복제 기술을 살펴보았습니다. 다음 내용을 다루었습니다.
- 원격 저장소 (remote repository) 이해 및 기본 저장소 복제
- 복제된 저장소의 내용 탐색
- 사용자 정의 이름으로 특정 디렉토리에 저장소 복제
- 제한된 기록으로 얕은 복제 (shallow clone) 생성
- 저장소의 특정 브랜치 (branch) 복제
이러한 기술을 통해 기존 프로젝트를 효율적으로 작업하고, 오픈 소스 소프트웨어에 기여하며, 자체 코드를 보다 효과적으로 관리할 수 있습니다. 기억하세요, 복제는 시작일 뿐입니다. Git 은 버전 관리 및 협업을 위한 훨씬 더 강력한 기능을 제공합니다.
Git 여정을 계속 진행하면서 이러한 다양한 복제 기술이 다양한 시나리오에서 매우 유용하여 시간 절약 및 프로젝트를 보다 효율적으로 관리하는 데 도움이 될 것입니다.



