작성 배경
- 이번주 과제를 수행하면서 git을 이용하면서 새롭게 알게된 내용에 대해 간단하게만 정리해보고자 한다.
git을 이용할 때, 프로젝트가 상당히 무거워져 용량이 커졌다고 하자. 이 때, git clone을 이용하는 등 내부 파일들까지 다 옮기며 작업하게 되면 불편 사항이 발생할 수 있을 것이다.
git에서는 위와 같은 상황을 위해, '.git폴더', 즉 해당 git repository에 대한 변경사항, 이력 등의 정보만을 담은 bare repository를 활용할 수 있도록 한다.
bare repository를 살펴보면 내부의 작업 파일들은 비어있고, .git 폴더만이 남아있다.
이 bare repository를 이용해 실제 파일들을 다시 접근할 수 있다.
예를 들어, 팀장의 github에 원격 저장소 A가 있다고 하고, 여기에 팀 작업 자료들이 저장되어 있다고 하자. 이 원격 저장소 A의 자료들을 내 개인 원격 저장소에 올려놓고 내 로컬과 이동하며 작업을 하고싶다.
위와 같은 경우, bare repository를 이용하면 아래와 같이 동작을 수행할 수 있다.
$ git clone --bare {원격 저장소 A의 주소}
$ cd ${원격 저장소 A의 폴더명}.git
# 아래 교육생 repository는 GitHub미리 만들어 놓아야 함
$ git push --mirror {원격 저장소 B의 주소}
$ cd ..
$ rm -rf ${원격 저장소 A의 폴더명}.git
$ git clone {원격 저장소 B의 주소}
ubuntu 환경에서 git을 사용할 때, 원격 저장소와 연동해 작업을 수행할 때마다 git login을 요청하거나 인증이 제대로 이루어지지 않는 등 귀찮아지는 상황이 발생한다.
git CLI를 설치하고 gh auth login 명령을 통해 로그인을 해두면 위와 같은 상황을 방지할 수 있다.
git CLI는 다음과 같은 명령어를 통해 설치할 수 있다. ( ubuntu 환경 가정)
$ curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
$ sudo apt update
$ sudo apt install gh
$ gh auth login