Git
Derivación
Buscar..
Sintaxis
-
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
-
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
-
git branch --unset-upstream [<branchname>]
-
git branch (-m | -M) [<oldbranch>] <newbranch>
-
git branch (-d | -D) [-r] <branchname>…
-
git branch --edit-description [<branchname>]
-
git branch [--color[=<when>] | --no-color] [-r | -a] [--list] [-v [--abbrev=<length> | --no-abbrev]] [--column[=<options>] | --no-column] [(--merged | --no-merged | --contains) [<commit>]] [--sort=<key>] [--points-at <object>] [<pattern>…]
Parámetros
Parámetro | Detalles |
---|---|
-d, --delete | Eliminar una rama. La rama debe estar completamente fusionada en su rama en sentido ascendente o en HEAD si no se configuró en sentido ascendente con --track o --set-upstream |
-RE | Atajo para --delete --force |
-m, --move | Mover / renombrar una rama y el correspondiente inicio de sesión |
-METRO | Atajo para - --move --force |
-r, --remotes | Listar o eliminar (si se usa con -d) las ramas de seguimiento remoto |
-a, --todos | Listar tanto las sucursales de seguimiento remoto como las sucursales locales |
--lista | Activar el modo de lista. git branch <pattern> intentaría crear una rama, usa git branch --list <pattern> para enumerar ramas coincidentes |
--estado arriba | Si la rama especificada aún no existe o si se ha dado --force , actúa exactamente como --track . De lo contrario, configura la configuración como --track lo haría al crear la rama, excepto que donde la rama apunta a no se cambia |
Observaciones
Cada repositorio git tiene una o más ramas . Una rama es una referencia con nombre a la HEAD
de una secuencia de confirmaciones.
Un repositorio de git tiene una rama actual (indicada por un *
en la lista de nombres de rama impresa por el comando de git branch
), siempre que cree una nueva confirmación con el comando de git commit
, su nueva confirmación se convierte en la HEAD
de la rama actual, y El HEAD anterior se convierte en el padre del nuevo commit.
Una nueva rama tendrá la misma HEAD
que la rama a partir de la cual se creó hasta que algo se confíe a la nueva rama.
Listado de sucursales
Git proporciona múltiples comandos para listar ramas. Todos los comandos utilizan la función de git branch
de git branch
, que proporcionará una lista de ciertas ramas, según las opciones que se pongan en la línea de comandos. Si es posible, Git indicará la rama seleccionada actualmente con una estrella al lado.
Gol | Mando |
---|---|
Lista de sucursales locales | git branch |
Lista de ramas locales verbosas | git branch -v |
Lista de sucursales remotas y locales | git branch -a o git branch --all |
Lista de sucursales remotas y locales (verbosas) | git branch -av |
Lista de ramas remotas | git branch -r |
Lista de sucursales remotas con el último commit | git branch -rv |
Lista de ramas fusionadas | git branch --merged |
Lista de ramas sin fusionar | git branch --no-merged |
Lista de ramas que contienen commit | git branch --contains [<commit>] |
Notas :
- Agregar una
v
adicional a-v
por ejemplo,$ git branch -avv
o$ git branch -vv
también imprimirá el nombre de la rama ascendente. - Las ramas mostradas en color rojo son ramas remotas
Creando y revisando nuevas sucursales.
Para crear una nueva rama, mientras permanece en la rama actual, use:
git branch <name>
En general, el nombre de la sucursal no debe contener espacios y está sujeto a otras especificaciones enumeradas aquí . Para cambiar a una rama existente:
git checkout <name>
Para crear una nueva rama y cambiar a ella:
git checkout -b <name>
Para crear una rama en un punto que no sea la última confirmación de la rama actual (también conocida como HEAD), use uno de estos comandos:
git branch <name> [<start-point>]
git checkout -b <name> [<start-point>]
El <start-point>
puede ser cualquier revisión conocida por git (por ejemplo, otro nombre de rama, SHA de confirmación o una referencia simbólica como HEAD o un nombre de etiqueta):
git checkout -b <name> some_other_branch
git checkout -b <name> af295
git checkout -b <name> HEAD~5
git checkout -b <name> v1.0.5
Para crear una rama desde una rama remota (el <remote_name>
predeterminado es origen):
git branch <name> <remote_name>/<branch_name>
git checkout -b <name> <remote_name>/<branch_name>
Si el nombre de una rama dada solo se encuentra en un control remoto, simplemente puede usar
git checkout -b <branch_name>
que es equivalente a
git checkout -b <branch_name> <remote_name>/<branch_name>
A veces es posible que deba mover varios de sus compromisos recientes a una nueva sucursal. Esto se puede lograr mediante la bifurcación y el "retroceso", así:
git branch <new_name>
git reset --hard HEAD~2 # Go back 2 commits, you will lose uncommitted work.
git checkout <new_name>
Aquí hay una explicación ilustrativa de esta técnica:
Initial state After git branch <new_name> After git reset --hard HEAD~2
newBranch newBranch
↓ ↓
A-B-C-D-E (HEAD) A-B-C-D-E (HEAD) A-B-C-D-E (HEAD)
↑ ↑ ↑
master master master
Eliminar una rama localmente
$ git branch -d dev
Elimina la rama llamada dev
si sus cambios se combinan con otra rama y no se perderán. Si la rama dev
contiene cambios que aún no se han fusionado y que se perderían, git branch -d
fallará:
$ git branch -d dev
error: The branch 'dev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev'.
Por el mensaje de advertencia, puede forzar la eliminación de la rama (y perder los cambios no combinados en esa rama) utilizando el indicador -D
:
$ git branch -D dev
Echa un vistazo a una nueva rama de seguimiento de una rama remota
Hay tres formas de crear una nueva feature
rama que rastrea el origin/feature
rama remota:
-
git checkout --track -b feature origin/feature
, -
git checkout -t origin/feature
, -
git checkout feature
: suponiendo que no hay una rama defeature
local y que solo hay un control remoto con la rama defeature
.
Para configurar en sentido ascendente para rastrear la rama remota, escriba:
-
git branch --set-upstream-to=<remote>/<branch> <branch>
-
git branch -u <remote>/<branch> <branch>
dónde:
-
<remote>
puede ser:origin
,develop
o el creado por el usuario, -
<branch>
es la rama del usuario para rastrear en remoto.
Para verificar qué sucursales remotas están siguiendo tus sucursales locales:
-
git branch -vv
Renombrar una rama
Renombra la rama que has desprotegido:
git branch -m new_branch_name
Renombrar otra rama:
git branch -m branch_you_want_to_rename new_branch_name
Sobrescriba el archivo único en el directorio de trabajo actual con el mismo de otra rama
El archivo desprotegido sobrescribirá los cambios aún no comprometidos que hizo en este archivo.
Este comando verificará el archivo file.example
(que se encuentra en la path/to/
del directorio path/to/
) y sobrescribirá los cambios que haya realizado en este archivo.
git checkout some-branch path/to/file
some-branch
puede ser cualquier cosa de tree-ish
conocida por git (consulte Selección de revisión y gitrevisions para obtener más detalles)
Debe agregar --
antes de la ruta si su archivo podría confundirse con un archivo (opcional de lo contrario). No se pueden proporcionar más opciones después de la --
.
git checkout some-branch -- some-file
El segundo some-file
es un archivo en este ejemplo.
Eliminar una rama remota
Para eliminar una rama en el repositorio remoto de origin
, puede usar para Git versión 1.5.0 y más reciente
git push origin :<branchName>
y a partir de la versión 1.7.0 de Git, puede eliminar una rama remota utilizando
git push origin --delete <branchName>
Para eliminar una rama de seguimiento remoto local:
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p # Shorter
Para eliminar una rama localmente. Tenga en cuenta que esto no eliminará la rama si tiene cambios no combinados:
git branch -d <branchName>
Para eliminar una rama, incluso si tiene cambios no combinados:
git branch -D <branchName>
Crear una rama huérfana (es decir, una rama sin compromiso principal)
git checkout --orphan new-orphan-branch
El primer compromiso realizado en esta nueva rama no tendrá padres y será la raíz de una nueva historia totalmente desconectada de todas las otras ramas y compromisos.
Empuje la rama a control remoto
Utilice para enviar las confirmaciones realizadas en su sucursal local a un repositorio remoto.
El comando git push
toma dos argumentos:
- Un nombre remoto, por ejemplo,
origin
- Un nombre de rama, por ejemplo,
master
Por ejemplo:
git push <REMOTENAME> <BRANCHNAME>
Como ejemplo, normalmente ejecuta git push origin master
para enviar sus cambios locales a su repositorio en línea.
El uso de -u
(abreviatura de --set-upstream
) configurará la información de seguimiento durante la inserción.
git push -u <REMOTENAME> <BRANCHNAME>
De forma predeterminada, git
empuja la rama local a una rama remota con el mismo nombre. Por ejemplo, si tiene una new-feature
local llamada, si presiona la rama local, también se creará una new-feature
rama remota. Si desea utilizar un nombre diferente para la rama remota, añada el nombre remoto después de que el nombre de la filial local, separados por :
:
git push <REMOTENAME> <LOCALBRANCHNAME>:<REMOTEBRANCHNAME>
Mover la rama actual HEAD a una confirmación arbitraria
Una rama es solo un puntero a una confirmación, por lo que puede moverla libremente. Para hacer que la rama se refiera a la confirmación aabbcc
, aabbcc
el comando
git reset --hard aabbcc
Tenga en cuenta que esto sobrescribirá el compromiso actual de su sucursal y, como tal, su historial completo. Podría perder algo de trabajo al emitir este comando. Si ese es el caso, puede utilizar el proceso de recuperación para recuperar las confirmaciones perdidas. Se puede recomendar que ejecute este comando en una nueva rama en lugar de la actual.
Sin embargo, este comando puede ser particularmente útil cuando se rebasa o se realizan otras grandes modificaciones en el historial.
Cambio rápido a la rama anterior.
Puedes cambiar rápidamente a la rama anterior usando
git checkout -
Buscando en las ramas
Para enumerar las sucursales locales que contienen una confirmación o etiqueta específica
git branch --contains <commit>
Para enumerar sucursales locales y remotas que contienen una confirmación o etiqueta específica
git branch -a --contains <commit>