Ya tengo una rama maestra local que rastrea la rama maestra remota de un proyecto github. Ahora, un colaborador mío ha creado una nueva sucursal en el mismo proyecto, y quiero hacer lo siguiente en consecuencia:
- crear una nueva sucursal localmente
- haga que esta nueva rama rastree la nueva rama remota creada.
¿Cómo debo hacerlo correctamente?
git
github
git-branch
MLister
fuente
fuente
git checkout -t <remote>/<whatever>
. Si solo hay una rama de seguimiento remoto que termina en<whatever>
usted, incluso puede hacergit checkout <whatever>
y adivinar lo que quiere decir.Respuestas:
El primer comando se asegura de tener una rama remota en el repositorio local. El segundo comando crea una rama local que rastrea la rama remota. Se supone que su nombre remoto es
origin
y el nombre de la sucursal esbranch-name
.--track
La opción está habilitada de forma predeterminada para las sucursales remotas y puede omitirla.fuente
git checkout <branchname>
y git la revisará automáticamente y configurará una rama de seguimiento. Solo quería reiterar lo que @Mark Longair dijo anteriormente en este comentario: stackoverflow.com/questions/11262703/… .remotes/origin/develop
? ¿No debería ser justoorigin/develop
? ¿Son estos lo mismo?git fetch --all
, de lo contrario, no se obtendrían nuevas sucursalescmd
, ¿eclipse detectará la nueva rama?Si no tiene una sucursal local existente, es realmente tan simple como:
Por ejemplo, si busca y hay una nueva rama de seguimiento remoto llamada
origin/feature/Main_Page
, simplemente haga esto:Esto crea una rama local con el mismo nombre que la rama remota, rastreando esa rama remota. Si tiene varios controles remotos con el mismo nombre de rama, puede usar los menos ambiguos:
Si ya creó la sucursal local y no desea eliminarla, consulte ¿Cómo hacer que una sucursal Git existente rastree una sucursal remota? .
fuente
git checkout 1.5-branch
(remotes/upstream/1.5-branch
está en la salida degit branch -a
) resulta enerror: pathspec '1.5-branch' did not match any file(s) known to git.
Cambiar esto agit checkout upstream/1.5-branch
resultados en HEAD separado y no se crea ninguna rama local. Creo que esta parte de la respuesta es simplemente incorrecta. Esto es con git 2.4.3<remote>/<branch>
. Una rama de seguimiento remota es de solo lectura, lo que indica dónde se encontraba esa rama en la última captura remota. Llamarcheckout
a esa referencia de sucursal te pone en modo HEAD separado, tal como dice Piotr. Tenga en cuenta que la especificación de la rama remota a buscar evita crear ramas de seguimiento remoto no deseadas.git checkout feature-branch
. NO sugiero usar el comandogit checkout origin/feature-branch
que, como ambos han señalado, dará como resultado una cabeza desprendida inútil.En primer lugar, debe buscar el repositorio remoto:
Luego puede crear la nueva rama y configurarla para rastrear la rama remota que desee:
También puede usar "git branch --track" en lugar de "git checkout -b" como máximo especificado.
fuente
checkout -b
usa una rama remota como punto de partida, entonces no es necesario usarla--track
.git checkout <branchname>
, y hay una rama remota con el mismo nombre (después de que hizo unagit fetch
), la rama local se configurará automáticamente para rastrear la remota.Cuando la rama no es una rama remota, puede empujar su rama local directamente al control remoto.
o cuando tienes una rama de desarrollo
o cuando existe la rama remota
Hay otras posibilidades para empujar una rama remota.
fuente