Colab Notebook에서 Git 레포를 사용하는 방법을 정리한다.
다루는 내용을 구체적으로 정리하면 다음과 같다.
- 일반 레포를 클론받는 방법
- 특정 브랜치를 클론받는 방법
- 프라이빗 레포를 클론받는 방법
- 프라이빗 레포의 특정 브랜치를 클론받는 방법
0. Colab에서 Git 클론 연습을 위한 기본 사항¶
Colab에서 Git 레포를 클론하면 클론한 데이터는 기본적으로 Colab 환경의 임시 저장소에 저장된다. 이 임시 저장소는 세션이 종료되면 사라지기 때문에 클론받은 데이터를 유지하려면 내 Google Drive에 저장해야 한다. Google Drive에 마운트한 후 현재 작업 중인 디렉터리를 내 구글 드라이브 내 폴더로 이동하고, 레포를 클론하면 된다.
Google Drive에 마운트하지 않고 Git 클론하기의 특징¶
- 데이터 유실: Colab 세션이 종료되면 모든 데이터가 사라짐.
- 매번 클론 필요: 매번 세션이 시작될 때마다 Git 레포를 다시 클론해야 함.
- 빠른 테스트: 일시적으로 코드를 테스트하거나 빠르게 작업할 때 유용함.
# Google Drive 마운트
from google.colab import drive
drive.mount('/content/drive')
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
# 내 계정의 구글 드라이브 내 MyDrive 폴더로 이동
cd "/content/drive/MyDrive"
/content/drive/MyDrive
1. 코랩 노트북에서 Git 레포 클론받기¶
일반 Git 레포를 Colab에서 클론받는 방법. 다른 사람들이 작업한 레포나 오픈 소스 설치를 위해 많이 사용하게 된다.
!git clone 명령어과 레포 주소를 사용하면 쉽게 된다.
# Colab에서 Git 레포 클론하기 (예시: matplotlib)
!git clone https://github.com/matplotlib/matplotlib.git
Cloning into 'matplotlib'...
remote: Enumerating objects: 326672, done.
remote: Counting objects: 100% (538/538), done.
remote: Compressing objects: 100% (407/407), done.
remote: Total 326672 (delta 268), reused 329 (delta 131), pack-reused 326134
Receiving objects: 100% (326672/326672), 441.49 MiB | 20.88 MiB/s, done.
Resolving deltas: 100% (226678/226678), done.
Updating files: 100% (4575/4575), done.
위 코드를 실행하면 matplotlib 레포가 Colab 환경에 클론된다. 클론된 디렉토리는 현재 작업 디렉토리 내에 생긴다.
2. Git 레포의 특정 브랜치 클론하기¶
특정 브랜치를 클론하려면 -b 옵션을 사용하면 된다. 예시로 matplotlib의 브랜치인 3.4.x 브랜치를 클론해보자.
# 특정 브랜치 클론하기 (예시: matplotlib의 3.4.x 브랜치)
!git clone -b 3.4.x https://github.com/matplotlib/matplotlib.git
fatal: destination path 'matplotlib' already exists and is not an empty directory.
특정 브랜치를 지정하지 않고 클론하면 기본적으로 main 또는 master 브랜치가 클론된다. 이 브랜치는 가장 최신의, 또는 가장 안정된 버전의 코드가 포함된 브랜치이다.
특정 브랜치를 클론한다는 것은 해당 브랜치에 있는 코드를 가져오는 것을 의미한다.
예를 들어, 3.4.x 브랜치를 클론하면 해당 브랜치에 있는 특정 버전의 코드를 가져오게 된다.
보통 개발 중인 기능이나 특정 버전의 코드를 테스트하거나 사용할 때 이렇게 -b 옵션을 활용하여 특정 브랜치 이름을 지정해 클론한다.
3. 프라이빗 레포 클론하기¶
프라이빗 레포, 즉 내가 개인적으로 사용하거나 팀 내에서 사용하는 공개되지 않은 레포를 클론하려면, 내 계증의 인증이 필요하다.
몇가지 방법이 있지만 가장 쉬운 방법은 개인 액세스 토큰을 사용하는 것이다.
먼저 GitHub에 로그인하면 우측 상단에 개인 프로필 아이콘이 있는데, 이를 클릭해서 Settings -> Developer settings -> Personal access tokens -> Tokens (classic) 을 차례로 선택한다.
우측 상단의 "Generate new token"을 선택해 개인 액세스 토큰을 생성한 후, 복사하여 사용하면 된다.
In [ ]:
# 프라이빗 레포 클론하기
!git clone https://[토큰이름:토큰비밀번호]@github.com[/사용자이름/레포지토리이름].git
4. 프라이빗 레포의 특정 브랜치 클론하기¶
프라이빗 레포의 특정 브랜치를 클론하려면 앞서 설명한 두 가지 방법을 조합하면 된다.
git clone에서 사용할 github 주소 앞에 "토큰이름:토큰비밀번호@"을 추가하고, 원하는 브랜치는 -b 옵션 뒤에 적어주면 된다.
# 프라이빗 레포의 특정 브랜치 클론하기
!git clone -b [브랜치이름] https://[토큰이름:토큰비밀번호]@github.com[/사용자이름/레포지토리이름].git
위 코드에서 토큰이름과 토큰비밀번호는 생성한 개인 액세스 토큰을 입력하면 된다.
5. 프라이빗 레포의 특정 브랜치에 푸시하기¶
프라이빗 레포의 특정 브랜치에 푸시하려면 먼저 클론한 디렉토리로 이동한 다음, 변경 사항을 추가하고 커밋한 후 푸시하면 된다.
푸시를 할 수 있으려면, 토큰을 생성할 때 적합한 권한 설정을 해야 한다.
repo: 모든 레포지토리에 대한 전체 제어 (읽기 및 쓰기 권한 포함)
repo:status: 레포지토리 상태 읽기 및 쓰기
repo_deployment: 레포지토리 배포 읽기 및 쓰기
public_repo: 퍼블릭 레포지토리 접근 권한
repo:invite: 레포지토리 초대 읽기 및 쓰기
security_events: 보안 이벤트 읽기
# 작업 디렉토리로 이동
%cd [레포지토리이름]
# 파일 변경 후 추가하기
!git add .
# 커밋하기
!git commit -m "[변경 사항에 대한 설명]"
# 특정 브랜치에 푸시하기
!git push origin [브랜치이름]
!jupyter nbconvert --to html "/content/drive/MyDrive/Colab Notebooks/git_clone.ipynb"
'Dev > Git' 카테고리의 다른 글
git commit message convention 깃 커밋 메세지 컨벤션 (0) | 2021.05.27 |
---|---|
[AI class day11] Git TIL (0) | 2021.05.04 |