¿Cuál de estas líneas es correcta?
git checkout 'another_branch'
O
git checkout origin 'another_branch'
O
git checkout origin/'another_branch'
git checkout 'another_branch'
O
git checkout origin 'another_branch'
O
git checkout origin/'another_branch'
Respuestas:
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 pero origin/another_branch
sí, entonces git checkout another_branch
es equivalente a git checkout -b another_branch origin/another_branch; git branch -u origin/another_branch
. Eso es para crear another_branch
desde origin/another_branch
y conjunto origin/another_branch
como el de aguas arriba another_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. Si origin
es una revisión y another_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 en git fetch
, git pull
y git push
como remoto, un alias de la url para el repositorio remoto.
git checkout origin/another_branch
tiene éxito si origin/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 a foo
:
git switch foo
Si foo
no existe y origin/foo
existe, intente crear foo
desde origin/foo
y luego cambie a foo
:
git switch -c foo origin/foo
# or simply
git switch foo
De manera más general, si foo
no existe, intente crear foo
desde una referencia o confirmación conocida y luego cambie a foo
:
git switch -c foo <ref>
git switch -c foo <commit>
Si mantenemos un repositorio en Gitlab y Github al mismo tiempo, el repositorio local puede tener dos controles remotos, por ejemplo, origin
para Gitlab y github
para Github. En este caso el repositorio tiene origin/foo
y github/foo
. git switch foo
se quejará fatal: invalid reference: foo
, porque no sabe de qué referencia, origin/foo
o github/foo
crear foo
. Necesitamos especificarlo con git switch -c foo origin/foo
o git 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:
git switch -c gitlab_foo origin/foo
git switch -c github_foo github/foo
Si foo
existe, intente recrear / forzar la creación foo
desde (o restablecer foo
) una referencia o confirmación conocida y luego cambie a foo
:
git switch -C foo <ref>
git switch -C foo <commit>
que son equivalentes a:
git switch foo
git reset [<ref>|<commit>] --hard
Intente cambiar a un HEAD separado de una referencia o confirmación conocida:
git switch -d <ref>
git switch -d <commit>
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:
git branch foo <ref>
git branch foo <commit>
git checkout
comando hace demasiadas cosas, en mi opinión. Es por eso que hay tantos modos de operación aquí. Si lo único que git 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
git fetch origin <----this will fetch the branch
git checkout branch_name <--- Switching the branch
Antes de cambiar la rama, asegúrese de no tener ningún archivo modificado, en ese caso, puede confirmar los cambios o puede guardarlos.
[ 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'
]
Con Git 2.23 en adelante, uno puede usar git switch <branch name>
para cambiar de rama.
Lo que funcionó para mí es lo siguiente:
Cambie a la rama necesaria:
git checkout -b BranchName
Y luego saqué el "maestro" por:
git pull origin master
Comandos útiles para trabajar en la vida diaria:
git checkout -b "branchname" -> creates new branch
git branch -> lists all branches
git checkout "branchname" -> switches to your branch
git push origin "branchname" -> Pushes to your branch
git add */filename -> Stages *(All files) or by given file name
git commit -m "commit message" -> Commits staged files
git push -> Pushes to your current branch
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
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/*
depth
parámetro) anteriormente y ahora se pregunta por qué no puede obtener otras ramas remotas obteniendo el error: 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
git checkout [branch]
para la mayoría de los usuarios que llegan a esta pregunta