Git 저장소의 업스트림을 동일한 저장소의 로컬 복제본으로 설정할 수 있나요?

Git 저장소의 업스트림을 동일한 저장소의 로컬 복제본으로 설정할 수 있나요?

/home/user/reponame(Repo 1) 에 하나의 저장소가 있습니다 . 그런 다음 이 저장소를 /tmp/reponame(Repo 2) 에 복제했습니다 . Repo 1의 업스트림 repo를 Repo 2로 변경할 수 있나요?

내가 본 다른 질문에서는 분기를 제안했지만 여기서는 내가 찾고 있는 것이 아닙니다. 그렇게 하면 git checkout -b test --track /tmp/reponame/master오류가 발생합니다 /tmp/reponame/master is outside repository.

답변1

Git은 저장소 전체 설정에 '업스트림'이라는 용어를 사용하지 않습니다. 개별 브랜치만 Git 용어로 업스트림을 가지며 다른 브랜치로만 설정할 수 있습니다. 그 목적은 git merge <otherbranch>. (귀하의 git checkout명령은 전적으로 브랜치 작업을 중심으로 구축되었습니다.)

대신에 아마도 당신은 다음을 찾고 있을 것입니다.'리모컨', 저장소 URL을 저장합니다. 모든 새로운 복제본은 소스 URL을 이름이 지정된 원격에 저장합니다 origin. 따라서 repo 1이 repo 2에 푸시할 수 있도록 하려면 git remote add또는 git remote set-url(해당 이름의 원격이 이미 존재하는지 여부에 따라) 다음을 사용할 수 있습니다.

git remote add origin /tmp/reponame
git fetch origin

또는:

git config remote.origin.url /tmp/reponame
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin

그 다음에는 종종 분기별 업스트림을 업데이트하여 git pull작동하게 만듭니다.

git branch --set-upstream-to="origin/master" master

관련 정보