
Eu tenho um repositório no /home/user/reponame
(Repo 1). Em seguida, clonei este repositório para /tmp/reponame
(Repo 2). É possível alterar o repositório upstream do Repo 1 para o Repo 2?
Outras perguntas que vi sugerem ramificações, mas não são o que procuro aqui. Quando faço isso git checkout -b test --track /tmp/reponame/master
, recebo o erro /tmp/reponame/master is outside repository
.
Responder1
O Git não usa o termo 'upstreams' para nenhuma configuração de todo o repositório. Apenas ramificações individuais possuem um upstream na terminologia Git, e ele só pode ser definido para alguma outra ramificação, porque sua finalidade é servir de atalho/padrão para comandos como git merge <otherbranch>
. (Seu git checkout
comando também é inteiramente desenvolvido para trabalhar com ramificações.)
Em vez disso, você provavelmente está procurando'Remotos', que armazena URLs de repositório. Cada novo clone armazena sua URL de origem em um arquivo remoto chamado origin
. Portanto, se você deseja que o repositório 1 possa enviar para o repositório 2, você pode usar git remote add
ou git remote set-url
(dependendo se um controle remoto com esse nome já existe ou não):
git remote add origin /tmp/reponame
git fetch origin
Alternativamente:
git config remote.origin.url /tmp/reponame
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
Isso geralmente é seguido pela atualização dos upstreams por ramificação, para fazer git pull
etc.
git branch --set-upstream-to="origin/master" master