
У меня есть один репозиторий в /home/user/reponame
(Repo 1). Затем я клонировал этот репозиторий в /tmp/reponame
(Repo 2). Возможно ли изменить вышестоящий репозиторий Repo 1 на Repo 2?
Другие вопросы, которые я видел, предлагают ветки, но это не то, что я ищу здесь. Когда я это делаю git checkout -b test --track /tmp/reponame/master
, я получаю ошибку /tmp/reponame/master is outside repository
.
решение1
Git не использует термин 'upstreams' для каких-либо настроек, охватывающих весь репозиторий. Только отдельные ветки имеют upstream в терминологии Git, и он может быть установлен только на какую-то другую ветку, поскольку его цель — быть сокращением/значением по умолчанию для таких команд, как git merge <otherbranch>
. (Ваша git checkout
команда также полностью построена вокруг работы с ветками.)
Вместо этого вы, вероятно, ищете'пульты', которые хранят URL-адреса репозиториев. Каждый новый клон сохраняет свой исходный URL-адрес в удаленном репозитории с именем origin
. Так что если вы хотите, чтобы репозиторий 1 мог отправлять данные в репозиторий 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