본문 바로가기

Git

[ Git ] 미러링을 수행했던 저장소에서 푸시를 했을때 다른 저장소로 push 될 때 해결법

[ 문제 ]

[ 상황 ]

A 저장소를 미러링 해서 B 저장소를 만든 상황이다 .

이때 , A 저장소에서 Push를 하면 B 저장소에 Push가 되고 ,

다시 fetch를 했을때 push 할 것들이 있는것으로 보여졌다 .

 

[ 확인 ]

혹시 origin 설정이 잘못된 것일까 origin 우클릭 - Edit origin을 확인해보니 잘 들어와 있었다 .

그래서 git 이 push 하는 저장소를 확인하기 위해 

git remote -v

를 해당 저장소에서 실행해주었다 .

origin  https://github.com/username/repo.git (fetch)
origin  https://github.com/username/repo.git (push)

이렇게 fetch 와 push 저장소가 나오는데 두개가 다름을 확인했다 .

push에 미러링 대상의 저장소로 잡혀있던 것이다 .

 

[ 해결 ]

Fetch URL 변경:

git remote set-url origin --fetch <새로운 fetch 원격 저장소 URL>

Push URL 변경:

git remote set-url --push origin <새로운 push 원격 저장소 URL>

 

한 줄로 Fetch와 Push URL 변경:

git remote set-url origin --push --add <새로운 fetch 원격 저장소 URL>
git remote set-url origin --push --delete <이전 push 원격 저장소 URL>

지피티에게 물어보니 다음과 같이 말해주었다 .. 

 

 

Git 저장소를 미러링(mirroring)할 때 fetch와 push 저장소가 다르게 설정되어 있는 것은 가능합니다. 미러링은 주로 원격 저장소의 모든 변경사항을 다른 저장소로 정확하게 복사하는 과정입니다. 때문에 이러한 미러링 설정에서 fetch와 push 저장소가 다르게 설정될 수 있습니다.

일반적으로, 미러링된 저장소는 다른 원격 저장소의 변경사항을 정확히 추적하고 동기화하는 것을 목적으로 합니다. 이러한 동기화를 위해서는 fetch 저장소로 변경사항을 가져오고(push 저장소로 푸시하지 않음) 원격 저장소로부터 변경사항을 다운로드합니다. 따라서 미러링 설정에서 fetch URL과 push URL이 다르게 설정되는 것은 이러한 목적에 부합합니다.

예를 들어, 다음과 같이 미러링된 저장소의 설정을 확인할 수 있습니다:

 

이 명령어를 실행하면 fetch URL과 push URL이 각각 나타납니다. 이 둘은 다를 수 있고, 특히 미러링 설정에서는 fetch를 위한 URL은 설정되어 있지만 push를 위한 URL은 설정되어 있지 않을 수 있습니다. 이렇게 설정된 경우에는 로컬 저장소는 변경사항을 가져오기(fetch)만 할 뿐, 미러링된 저장소로 변경사항을 푸시(push)하지 않습니다. 이것이 일반적인 미러링 설정의 동작 방식입니다.