¿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_branchya existe localmente y no está en esta rama,git checkout another_branchcambie a la rama.Si
another_branchno existe peroorigin/another_branchsí, entoncesgit checkout another_branches equivalente agit checkout -b another_branch origin/another_branch; git branch -u origin/another_branch. Eso es para crearanother_branchdesdeorigin/another_branchy conjuntoorigin/another_branchcomo el de aguas arribaanother_branch.Si no existe ninguno,
git checkout another_branchdevuelve el error.git checkout origin another_branchdevuelve error en la mayoría de los casos. Siorigines una revisión yanother_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 engit fetch,git pullygit pushcomo remoto, un alias de la url para el repositorio remoto.git checkout origin/another_branchtiene éxito siorigin/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 afoo:Si
foono existe yorigin/fooexiste, intente crearfoodesdeorigin/fooy luego cambie afoo:De manera más general, si
foono existe, intente crearfoodesde 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,
originpara Gitlab ygithubpara Github. En este caso el repositorio tieneorigin/fooygithub/foo.git switch foose quejaráfatal: invalid reference: foo, porque no sabe de qué referencia,origin/fooogithub/foocrearfoo. Necesitamos especificarlo congit switch -c foo origin/fooogit 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:Si
fooexiste, intente recrear / forzar la creaciónfoodesde (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 checkoutcomando hace demasiadas cosas, en mi opinión. Es por eso que hay tantos modos de operación aquí. Si lo único quegit 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
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 branchnamefuente
Cheque :
git branch -aSi solo tienes una rama. Luego haz los pasos a continuación.
git config --listgit config --unset remote.origin.fetchgit config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*fuente
depthpará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 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
fuente