¿Cuál de estas líneas es correcta?
git checkout 'another_branch'
O
git checkout origin 'another_branch'
O
git checkout origin/'another_branch'
¿Y cuál es la diferencia entre estas líneas?
git
github
version-control
gitlab
git-checkout
Benyamin Jafari
fuente
fuente
git checkout [branch]
para la mayoría de los usuarios que llegan a esta preguntaRespuestas:
Si
another_branch
ya existe localmente y no está en esta rama,git checkout another_branch
cambie a la rama.Si
another_branch
no existe peroorigin/another_branch
sí, entoncesgit checkout another_branch
es equivalente agit checkout -b another_branch origin/another_branch; git branch -u origin/another_branch
. Eso es para crearanother_branch
desdeorigin/another_branch
y conjuntoorigin/another_branch
como el de aguas arribaanother_branch
.Si no existe ninguno,
git checkout another_branch
devuelve el error.git checkout origin another_branch
devuelve error en la mayoría de los casos. Siorigin
es una revisión yanother_branch
es un archivo, comprueba el archivo de esa revisión, pero lo más probable es que no sea lo que espera.origin
se usa principalmente engit fetch
,git pull
ygit push
como remoto, un alias de la url para el repositorio remoto.git checkout origin/another_branch
tiene éxito siorigin/another_branch
existe. Conduce a estar en estado HEAD separado, no en ninguna rama. Si realiza nuevas confirmaciones, no se podrá acceder a las nuevas confirmaciones desde ninguna rama existente y ninguna de las ramas se actualizará.ACTUALIZACIÓN :
Como se lanzó 2.23.0, con él también podemos usar
git switch
para crear y cambiar ramas.Si
foo
existe, intente cambiar afoo
:Si
foo
no existe yorigin/foo
existe, intente crearfoo
desdeorigin/foo
y luego cambie afoo
:De manera más general, si
foo
no existe, intente crearfoo
desde una referencia o confirmación conocida y luego cambie afoo
:Si mantenemos un repositorio en Gitlab y Github al mismo tiempo, el repositorio local puede tener dos controles remotos, por ejemplo,
origin
para Gitlab ygithub
para Github. En este caso el repositorio tieneorigin/foo
ygithub/foo
.git switch foo
se quejaráfatal: invalid reference: foo
, porque no sabe de qué referencia,origin/foo
ogithub/foo
crearfoo
. Necesitamos especificarlo congit switch -c foo origin/foo
ogit switch -c foo github/foo
según la necesidad. Si queremos crear ramas desde ambas ramas remotas, es mejor usar nombres distintivos para las nuevas ramas:Si
foo
existe, intente recrear / forzar la creaciónfoo
desde (o restablecerfoo
) una referencia o confirmación conocida y luego cambie afoo
:que son equivalentes a:
Intente cambiar a un HEAD separado de una referencia o confirmación conocida:
Si solo desea crear una rama pero no cambiarla,
git branch
úsela. Intente crear una rama a partir de una referencia o confirmación conocida:fuente
git checkout
comando hace demasiadas cosas, en mi opinión. Es por eso que hay tantos modos de operación aquí. Si lo único quegit checkout
hiciera fue cambiar de rama, la respuesta sería simple, pero también puede crear ramas e incluso extraer archivos de confirmaciones específicas sin cambiar de rama.git switch
para cambiar a una rama.git checkout
en su lugar para versiones antiguas, que también funciona en versiones modernas.Cambiando a otra rama en git. Respuesta directa,
git-checkout - Cambia ramas o restaura archivos de árbol de trabajo
Antes de cambiar la rama, asegúrese de no tener ningún archivo modificado, en ese caso, puede confirmar los cambios o puede guardarlos.
fuente
[
git checkout "branch_name"
]es otra forma de decir:
[
git checkout -b branch_name origin/branch_name
]en caso de que "branch_name" exista solo de forma remota.
[
git checkout -b branch_name origin/branch_name
] es útil en caso de que tenga múltiples controles remotos.Con respecto a [
git checkout origin 'another_branch'
] no estoy seguro de que esto sea posible, AFAK puede hacerlo usando el comando "buscar" - [git fetch origin 'another_branch'
]fuente
Con Git 2.23 en adelante, uno puede usar
git switch <branch name>
para cambiar de rama.fuente
Lo que funcionó para mí es lo siguiente:
fuente
Comandos útiles para trabajar en la vida diaria:
fuente
Si desea que la rama rastree la rama remota, lo cual es muy importante si va a confirmar cambios en la rama y extraer cambios, etc., debe usar agregar un -t para el pago real, por ejemplo:
git checkout -t branchname
fuente
Cheque :
git branch -a
Si solo tienes una rama. Luego haz los pasos a continuación.
git config --list
git config --unset remote.origin.fetch
git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
fuente
depth
parámetro) anteriormente y ahora se pregunta por qué no puede obtener otras ramas remotas obteniendo elerror: pathspec 'another_branch' did not match any file(s) known to git
uso de los comandos sugeridos anteriormente. Seguramente no se trata de la pregunta original, pero puede ayudar a otros a rascarse la cabeza aquí.Estoy usando esto para cambiar una rama a otra, cualquiera que pueda usar me funciona como un encanto.
git switch [branchName] O git checkout [branchName]
Ej: git switch desarrollar O
git checkout desarrollar
fuente