Me gustaría tomar una sola rama (no todas) de un repositorio remoto y crear una rama de seguimiento local que pueda rastrear más actualizaciones a esa rama remota. Las otras ramas en el repositorio remoto son muy grandes, por lo que me gustaría evitar buscarlas. ¿Cómo hago esto?
Editar: lo descubrí yo mismo, pero StackOverflow se niega a permitirme proporcionar la respuesta como respuesta, por lo que lo pondré aquí en la pregunta.
Utiliza la opción -t para git add remoto, por ejemplo:
git remote add -t remote-branch remote-name remote-url
Puede usar múltiples " -t branch
" opciones para agarrar múltiples ramas.
Respuestas:
Trabajó para mi.
fuente
FETCH_HEAD
después de la recuperación . ¡Gracias!git checkout FETCH_HEAD
a pagarremote_name
esorigin
. por ejemplo:git fetch origin <branch_name>
Una forma es la siguiente:
Sin embargo, esto no configura el seguimiento.
Para obtener más información, consulte la documentación de git fetch .
EDITAR : como @ user1338062 señala a continuación : si aún no tiene un clon local del repositorio donde desea agregar la nueva rama, pero desea crear un nuevo repositorio local, entonces
git clone --branch <branch_name> --single-branch <repo_url>
proporciona una solución más corta.fuente
git checkout <branchname>
, veo que git configura automáticamente la rama de seguimiento, si la única rama con ese nombre es la rama remota.git clone
ahora soporta--branch
y--single-branch
opciones, publiqué una respuesta con demostración .Sé que ya hay muchas respuestas, pero estos son los pasos que me funcionaron:
git fetch <remote_name> <branch_name>
git branch <branch_name> FETCH_HEAD
git checkout <branch_name>
Estos se basan en la respuesta de @Abdulsattar Mohammed, el comentario de @Christoph sobre esa respuesta y estas otras preguntas de desbordamiento de pila y sus respuestas:
fuente
Para actualizar el control remoto existente para rastrear ramas específicas solo use:
De
git help remote
:fuente
--single-branch
repositorio y no pude descargar ramas adicionales más tarde. ¡Gracias!Una forma de hacerlo:
en .git / config fetch para el repositorio remoto debe configurarse para recuperar cualquier rama:
para buscar la rama remota:
para crear una rama local 'nombre-rama' configurada para rastrear la rama remota 'nombre-rama' desde el origen.
para enumerar todas las ramas
fuente
Copiado de la publicación del autor:
Use la
-t
opción paragit remote add
, por ejemplo:Puedes usar múltiples
-t branch
opciones para agarrar múltiples ramas.fuente
Si desea cambiar el valor predeterminado para "git pull" y "git fetch" para obtener solo ramas específicas, puede editar .git / config para que la configuración remota se vea así:
Esto solo buscará el maestro desde el origen de forma predeterminada. Consulte para obtener más información: https://git-scm.com/book/en/v2/Git-Internals-The-Refspec
EDITAR: Acabo de darme cuenta de que esto es lo mismo que la opción -t hace para git remote add. Al menos, esta es una buena manera de hacerlo después de agregar el control remoto si no desea eliminar el control remoto y agregarlo nuevamente usando -t.
fuente
En aras de la integridad, aquí hay un comando de ejemplo para un nuevo pago:
Como se menciona en otras respuestas, se establece
remote.origin.fetch
así:fuente
versión de git: 2.74
Así es como lo hago:
fuente
git versión 2.16.1.windows.4
Simplemente haciendo un git fetch remoteRepositoryName branchName
(eg: git fetch origin my_local_branch)
es suficiente. Se realizará la recuperación y se creará una nueva sucursal local con el mismo nombre y el seguimiento se establecerá en la sucursal remota.Luego realice git checkout branchName
fuente
git branch
hasta queMis soluciones alternativas:
si no tienes un clon local:
fuente
<remote_name>
que le gustaría usar (siéntase libre de usarorigin
y omita el paso 1.)git remote add <remote_name> <remote_url>
git fetch <remote_name> <branch>
<your_local_branch_name>
quieras usar. Podría ser lo mismo que<branch>
.git checkout <remote_name>/<branch> -b <your_local_branch_name>
¡Espero que ayude!
fuente
La respuesta en realidad depende de la lista actual de ramas de seguimiento que tenga. Puede buscar una rama específica desde el control remoto
git fetch <remote_name> <branch_name>
solo si la rama ya está en la lista de ramas de seguimiento (puede verificarla congit branch -r
).Supongamos que he clonado el control remoto con la opción --single-branch anteriormente, y en este caso la única rama de rastreo que tengo es la "clonada". Estoy un poco desconcertado por los consejos para ajustar manualmente la configuración de git, así como al escribir
git remote add <remote_name> <remote_url>
comandos. Como "git remote add" configura un nuevo control remoto, obviamente no funciona con el repositorio remoto existente; el suministro de opciones "-t branch" no me ayudó.En caso de que exista el control remoto y la rama que desea buscar existe en ese control remoto:
Verifique
git branch -r
si puede ver esta rama como una rama de seguimiento. Si no es así (como en mi caso con un clon de rama única), agregue esta rama a la lista de ramas de seguimiento mediante "git remote set-branch" con la opción --add:git remote set-branches --add <remote_name> <branch_name>
Ahora puede buscar una rama específica (duplicar aquí otras respuestas):
git fetch <remote_name> <branch_name>
Y cree y finalice una nueva sucursal local con "checkout --track", que recibirá el mismo "nombre de sucursal" que una sucursal de seguimiento:
git checkout --track <remote_name>/<branch_name>
fuente
La forma más sencilla de hacer eso.
Ejemplo: quiero obtener la rama de uat desde el origen y cambiar a esta como la rama de trabajo actual.
fuente