2022-08-22 23:20:17
git 세팅 후 원격 브랜치가 안받아지는 문제가 발생함.
git fetch 등을 해도 받을 수 없음.
해당 현상의 원인은 저장소를 Clone 할 당시 단일 브랜치 저장소로 생성하였었음.
기타 프로그램을 이용하여 원격 저장소를 Clone 시 설정을 잘못 건드는 등의 이유로 단일 브랜치 저장소로 받아버리면 이러한 문제가 발생할 수 있다.
특정 브랜치만 fetch되므로 원격 추적 브랜치(Remote traking branch)가 생성이 안되므로 원활한 동작을 하지 않는 것.
간단한 테스트를 위해서 아래 예시를 들어보았다. 저장소는 이 블로그의 배포 저장소
git clone git@github.com:Lazyig/devblog.git
cat devblog/.git/config
아래는 그 결과
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git@github.com:Lazyig/devblog.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
remote = origin
merge = refs/heads/main
git clone --single-branch git@github.com:Lazyig/devblog.git devblog2
cat devblog2/.git/config
아래는 그 결과
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git@github.com:Lazyig/devblog.git
fetch = +refs/heads/main:refs/remotes/origin/main
[branch "main"]
remote = origin
merge = refs/heads/main
origin 리모트 설정의 fetch 항목을 보면 단일 브랜치로 저장소를 받을 경우 main만 지정해놓은걸 볼 수 있다.
이러할 경우 fetch를 해도 원하는 결과가 안나오는 것.
결국 오류라기 보다는 설정을 잘못하여 원치 않는 용도로 설정해버려서 이다.
다음 명령어로 fetch 하는 정보를 수정해준다.
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
이후 fetch를 진행하면 원격 추적 브랜치가 정상적으로 들어와있다.
git fetch origin
아래는 원격 브랜치 확인
git branch -r