git - tag - ¿Cómo cambiar el control remoto que está siguiendo una rama?
qué tipos de etiquetas existen en git (10)
Usando git v1.8.0 o posterior:
git branch branch_name
--set-upstream-to
your_new_remote/branch_name
O puedes usar el interruptor -u
:
git branch branch_name
-u
your_new_remote/branch_name
Usando git v1.7.12 o anterior:
git branch --set-upstream branch_name your_new_remote/branch_name
El repositorio central
tenía que configurarse en un nuevo servidor, por lo que creé un nuevo control remoto en mi repositorio local, y lo instalé.
Pero ahora, cuando hago git pull
, dice que estoy actualizado. Está mal, me está hablando de la antigua rama remota, no de la nueva, que sé que, por cierto, tiene nuevos compromisos que buscar.
¿Cómo cambio mi sucursal local para rastrear un control remoto diferente?
Puedo ver esto en el archivo de configuración de git pero no quiero desordenar las cosas.
[branch "master"]
remote = oldserver
merge = refs/heads/master
Con un git actualizado (2.5.5) el comando es el siguiente:
git branch --set-upstream-to=origin/branch
Esto actualizará la rama de seguimiento remoto para su rama local actual
En la última versión de Git como 2.7.4 ,
git checkout branch_name
# nombre de la sucursal que desea cambiar la rama de seguimiento
git branch --set-upstream-to=upstream/tracking_branch_name
#upstream - nombre remoto
Este es el comando más fácil:
git push --set-upstream <new-origin> <branch-to-track>
Por ejemplo, dado el comando git remote -v
produce algo como:
origin ssh://[email protected]/~myself/projectr.git (fetch)
origin ssh://[email protected]/~myself/projectr.git (push)
team ssh://[email protected]/vbs/projectr.git (fetch)
team ssh://[email protected]/vbs/projectr.git (push)
Para cambiar al seguimiento del equipo en su lugar:
git push --set-upstream team master
Otra opción para tener mucho control sobre lo que está sucediendo es editar las configuraciones a mano:
git config --edit
o la taquigrafía
git config -e
Luego edite el archivo a voluntad, guárdelo y se aplicarán sus modificaciones.
Para mí la solución fue:
git remote set-url origin https://some_url/some_repo
Entonces:
git push
Puedes eliminar tu rama actual y hacer:
git branch --track local_branch remote_branch
O cambiar cambiar el servidor remoto al actual en la configuración
Según lo que entiendo de la última documentation git, la sinopsis es:
git branch -u upstream-branch local-branch
git branch --set-upstream-to=upstream-branch local-branch
Este uso parece ser un poco diferente a la respuesta de urschrei, ya que en su sinopsis es:
git branch local-branch -u upstream-branch
git branch local-branch --set-upstream-to=upstream-branch
Supongo que cambiaron la documentación de nuevo?
Si estás cuerdo al respecto, editar el archivo de configuración es lo suficientemente seguro. Si quieres ser un poco más paranoico, puedes usar el comando de porcelana para modificarlo:
git config branch.master.remote newserver
Por supuesto, si observa la configuración antes y después, verá que hizo exactamente lo que iba a hacer.
Pero en tu caso individual, lo que yo haría es:
git remote rename origin old-origin
git remote rename new-origin origin
Es decir, si el nuevo servidor va a ser el control remoto canónico, ¿por qué no lo llama origen como si originalmente lo hubiera clonado?
git fetch origin
git checkout --track -b local_branch_name origin/branch_name
o
git fetch
git checkout -b local_branch_name origin/branch_name