
USB나 외장하드를 Git Push 저장소처럼 사용해 보기
가장 간단한 구조
예를 들어 USB가:
/home/pion79/usb에 마운트되어 있고, 여기에 Git 저장소를 만들었다고 하면:
내 컴퓨터
↓ git push
USB / 외장하드
└── myproject.git이런 식으로 사용할 수 있습니다.
1. USB에 Bare Repository 만들기
USB에서:
cd /home/pion79/usb
mkdir myproject.git
cd myproject.git
git init --bare여기서 중요한 것이 **--bare**입니다.
일반 Git 저장소와 달리 작업 파일을 가지고 있지 않고, git push를 받기 위한 저장소입니다.
확인 : git 저장소에 프로젝트 저장소 확인하기
cd ~/myproject.git
pwd
/home/pion79/usb/myproject.git2. 내 프로젝트에서 작업
내 컴퓨터의 프로젝트 디렉터리에서 .git 만들기
cd ~/myproject
git init
touch a.txt
git add .
git commit -m "first commit"
git branch -M mainremote를 추가함
cd ~/myproject
git remote add usb /home/pion79/usb/myproject.git여기서 ~ add usb ~ "usb"는 별칭과 origin과 같은 기능임
확인:
git remote -v그러면 대략:
usb /home/pion79/usb/myproject.git (fetch)
usb /home/pion79/usb/myproject.git (push)3. Branch 맞추기 : USB 저장소에서 (선택)
USB 저장소 브랜치가 master라면, 이름 자체를 main으로 변경
git branch -m master main.
브랜치의 심볼릭을 변경 : 먼저 push를 하고서 브랜치 명을 바꿀 경우 심볼릭도 변경해야 하는 경우가 있음.
git symbolic-ref HEAD refs/heads/main4. USB로 push
git push usb main그러면 GitHub가 아니라 USB에 있는 Git 저장소로 코드가 저장됩니다.
5. 소스 코드 배포
: push하면 서버의 /var/www/myapp 같은 실제 디렉토리에 소스 코드가 바로 배포되게 하고 싶다는 것이라면, 한 단계 더 설정하는 게 좋습니다.
구조를 이렇게 만듭니다.
내 PC
│
│ git push server main
▼
서버
/srv/git/myapp.git ← bare repository
│
│ post-receive hook
▼
/var/www/myapp ← 실제 실행되는 소스서버에서 hook을 만듭니다.
nano /srv/git/myapp.git/hooks/post-receive내용:
#!/bin/sh
git --work-tree=/var/www/myapp \
--git-dir=/srv/git/myapp.git \
checkout -f main그리고 실행 권한을 줍니다.
chmod +x /srv/git/myapp.git/hooks/post-receive/var/www/myapp도 준비합니다.
mkdir -p /var/www/myapp이후 로컬에서:
git push server main하면 자동으로:
git push
↓
/srv/git/myapp.git
↓
post-receive 실행
↓
/var/www/myapp 에 최신 main 체크아웃즉, 간단한 개인 서버라면 이것만으로도 git push 기반 자동 배포 시스템을 만들 수 있습니다.
다만 /var/www/myapp에서 Docker Compose, Node.js, Spring, Django 같은 서비스를 실제로 돌린다면 hook에서 docker compose up -d --build나 서비스 재시작까지 연결하는 구조를 추천합니다.
.
Git push → 서버 자동 배포 → Docker 재시작까지 완성된 설정을.. 이후에 .....
