¿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_branchya existe localmente y no está en esta rama, git checkout another_branchcambie a la rama.
Si another_branchno existe pero origin/another_branchsí, entonces git checkout another_branches equivalente a git checkout -b another_branch origin/another_branch; git branch -u origin/another_branch. Eso es para crear another_branchdesde origin/another_branchy conjunto origin/another_branchcomo el de aguas arriba another_branch.
Si no existe ninguno, git checkout another_branchdevuelve el error.
git checkout origin another_branchdevuelve error en la mayoría de los casos. Si origines una revisión y another_branches un archivo, comprueba el archivo de esa revisión, pero lo más probable es que no sea lo que espera. originse usa principalmente en git fetch, git pully git pushcomo remoto, un alias de la url para el repositorio remoto.
git checkout origin/another_branchtiene éxito si origin/another_branchexiste. 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 switchpara crear y cambiar ramas.
Si fooexiste, intente cambiar a foo:
git switch foo
Si foono existe y origin/fooexiste, intente crear foodesde origin/fooy luego cambie a foo:
git switch -c foo origin/foo
# or simply
git switch foo
De manera más general, si foono existe, intente crear foodesde 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, originpara Gitlab y githubpara Github. En este caso el repositorio tiene origin/fooy github/foo. git switch foose quejará fatal: invalid reference: foo, porque no sabe de qué referencia, origin/fooo github/foocrear foo. Necesitamos especificarlo con git switch -c foo origin/fooo git switch -c foo github/foosegú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 fooexiste, intente recrear / forzar la creación foodesde (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 checkoutcomando hace demasiadas cosas, en mi opinión. Es por eso que hay tantos modos de operación aquí. Si lo único que git checkouthiciera 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 switchpara cambiar a una rama.
git checkouten 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 --listgit config --unset remote.origin.fetch git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*depthpará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 gituso 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