Menu

메모용 개발 블로그

전체보기 > Git >

git 원격 브랜치 안받아지는 문제

2022-08-22 23:20:17

서론

git 세팅 후 원격 브랜치가 안받아지는 문제가 발생함.

git fetch 등을 해도 받을 수 없음.

원인

해당 현상의 원인은 저장소를 Clone 할 당시 단일 브랜치 저장소로 생성하였었음.

기타 프로그램을 이용하여 원격 저장소를 Clone 시 설정을 잘못 건드는 등의 이유로 단일 브랜치 저장소로 받아버리면 이러한 문제가 발생할 수 있다.

특정 브랜치만 fetch되므로 원격 추적 브랜치(Remote traking branch)가 생성이 안되므로 원활한 동작을 하지 않는 것.

간단한 테스트를 위해서 아래 예시를 들어보았다. 저장소는 이 블로그의 배포 저장소

일반 저장소의 저장소 config

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

단일 브랜치 저장소 config

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