¿Hay alguna diferencia entre git checkout y git pago -b

3 minutos de lectura

Soy muy nuevo en git, así que estoy a punto de hacer mi primera confirmación, así que para esto he creado una rama escribiendo git checkout my_branch .Esto funcionó bien. Pero después vi en la documentación que se usa git checkout -b my_branch

¿Hay alguna diferencia entre esos?

  • git -b checkout es corto para git branch y luego git checkoutpero ¿qué hay de excluir el -ben git checkout ¿Tiene algún efecto?

    usuario11449055

    3 mayo 2019 a las 17:44


  • Lo que podría inferir de las respuestas a continuación, pero no se explican explícitamente, es que Sicomo usted dice, git checkout my_branch (sin -b) funcionó, entonces la sucursal ya existía y lo que sucedió puede no ser lo que crees que sucedió. (Debido a que git es útil, de una manera que realmente es útil pero no es fácil de explicar, es posible que la rama aún no haya existido localmente, que es lo que la respuesta de torek explica con un poco más de detalle).

    –Mark Adelsberger

    3 mayo 2019 a las 18:14

Sí:

$ git checkout asdfadsf
error: pathspec 'asdfasdf' did not match any file(s) known to git

Esto fracasó porque yo no tener una sucursal asdfasdf. Git trató de tratar asdfasdf como un nombre de archivo, y yo no tener un archivo llamado asdfasdf o.

$ git checkout -b asdfasdf
Switched to a new branch 'asdfasdf'

Esto tuvo éxito y creó una nueva sucursal.

Por otro lado, yo no tener una sucursal nombrada mainty todavía:

$ git checkout maint
Branch 'maint' set up to track remote branch 'maint' from 'origin'.
Switched to a new branch 'maint'

Esto también creó un nuevo sucursal, maint. Pero observe cómo se ve diferente. todavía dice Switched to a new branchpero primero dice Branch 'maint' set up to track remote branch 'maint' from 'origin'.

El razonamiento detrás de esto es un poco complicado, pero se reduce a esto:

  • Sin -b, si solicita una rama que no tiene, Git probará algunas alternativas. ¡Algunos de ellos pueden funcionar! Cuando funciona de la manera maint hizo aquí, la nueva sucursal tiene un río arriba puesto ya.
  • Con -bGit simplemente crear la sucursal, sin hacer preguntas (siempre que sea posible crear una nueva sucursal). la nueva sucursal no configurarse con una corriente arriba. Si ya tiene la sucursal, obtendrá un error.

Si tu querer una rama con un conjunto aguas arriba, por ejemplo, si hay un origin/feature/x123 y tu quieres el tuyo feature/x123 creado para que coincida con usted no quiero el -b opción, porque eso no hará la búsqueda de un upstream origin/feature/x123. Si tu no quieres un conjunto upstream, tú hacer quiero el -b opción.

(Si y cuándo desea que se configure el flujo ascendente para usted es una pregunta separada. Busque StackOverflow para las respuestas existentes).

cuando ejecutas con -b le estás diciendo a git que cree la rama por ti. git checkout sin -b requiere que la rama ya exista para funcionar.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad