원격 저장소
4. 응용 변형 예제
4.1 force-with-lease 로 커밋 수정 후 안전 push
git commit -q --amend -m "커밋4: 라이선스 추가 (문구 수정)"
git push # 거부: non-fast-forward
git push --force-with-lease origin main--amend 로 해시가 바뀌면 일반 push 는 거부됩니다. --force-with-lease 는 내가 마지막으로 안 origin/main 과 실제 원격이 같을 때만 덮어써, --force 와 달리 동료의 새 커밋을 지우지 않습니다.
4.2 push --delete 로 브랜치·태그 정리
git push origin --delete feature
git push origin --delete v1.0임시 feature 브랜치와 v1.0 태그를 원격에서 지웁니다. 로컬 쪽은 그대로 남으므로 git branch -d feature, git tag -d v1.0 을 따로 실행합니다.
4.3 fetch --prune 로 삭제된 원격 브랜치 정리
git branch -a # origin/feature 가 아직 보임
git fetch --prune
git branch -a # origin/feature 가 사라짐원격에서 지운 브랜치도 fetch --prune 을 하기 전까지는 로컬에 원격 추적 브랜치로 남아 있습니다. 정기적으로 돌리면 지워진 브랜치가 쌓이지 않습니다.
4.4 clone --depth·--branch 로 얕은 클론
git clone -q --no-local --depth 1 --branch main "$ORIGIN" "$WORK/D"
git -C "$WORK/D" rev-parse --is-shallow-repository # true배포용 빌드 서버처럼 이력이 필요 없을 때 최근 커밋만 받습니다. 로컬 경로는 --no-local 없이는 하드링크로 최적화되어 --depth 가 무시됩니다.
4.5 archive 로 소스만 반출
git archive --format=tar -o "$WORK/src.tar" HEAD
tar -tf "$WORK/src.tar"이력 없이 지금 상태의 소스만 tar 로 뽑습니다. bundle 은 이력까지 포함한 저장소 전체이고, archive 는 이력 없는 소스 스냅샷이라는 점이 다릅니다.