git branch - Rama de un commit anterior usando Git




7 Answers

Puedes crear la rama a través de un hash:

git branch branchname <sha1-of-commit>

O utilizando una referencia simbólica:

git branch branchname HEAD~3

Para pagar la rama al crearla, use

git checkout -b branchname <sha1-of-commit or HEAD~3>
crear volver

Si tengo n confirmaciones, ¿cómo puedo pasar de la confirmación n-3?

Puedo ver el hash de cada cometer.




Si no está seguro de qué compromiso desea bifurcar por adelantado, puede verificar los compromisos y examinar su código (ver fuente, compilación, prueba) por

git checkout <sha1-of-commit>

Una vez que encuentre la confirmación de la que desea derivar, puede hacerlo desde la confirmación (es decir, sin volver al maestro primero) simplemente creando una rama de la forma habitual:

git checkout -b <branch_name>



git checkout -b <branch-name> <sha1-of-commit>



Puedes hacerlo en Stash.

  1. Haga clic en el compromiso
  2. En la parte superior derecha de la pantalla, haga clic en "Etiquetar este compromiso"
  3. A continuación, puede crear la nueva rama a partir de la etiqueta que acaba de crear.



Una gran pregunta relacionada es: ¿Cómo diablos lo solucionas usando la opción --help de git? Intentemos esto:

git branch --help

Vemos esta salida:

NAME
       git-branch - List, create, or delete branches    

SYNOPSIS
       git branch [--color[=<when>] | --no-color] [-r | -a]
               [--list] [-v [--abbrev=<length> | --no-abbrev]]
               [--column[=<options>] | --no-column]
               [(--merged | --no-merged | --contains) [<commit>]] [--sort=<key>]
               [--points-at <object>] [<pattern>...]
       git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
       git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
       git branch --unset-upstream [<branchname>]
       git branch (-m | -M) [<oldbranch>] <newbranch>
       git branch (-d | -D) [-r] <branchname>...
       git branch --edit-description [<branchname>]

Gobbledegook.

Busque en el texto posterior la palabra "cometer". Encontramos esto:

   <start-point>
       The new branch head will point to this commit. It may be given as a branch name, a
       commit-id, or a tag. If this option is omitted, the current HEAD will be used instead.

¡Estamos llegando a alguna parte!

Ahora, enfócate en esta línea del libro engullido:

git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]

Condense que a esto:

git branch <branchname> [<start-point>]

Y hecho.




Esto es lo que hice:

C:\Users\[path]\build>git checkout -b responsivenavigation 8a75b001096536b3216022484af3026aa9c7bb5b
Switched to a new branch 'responsivenavigation'

C:\Users\jaimemontoya\Dropbox\CuponClub\androidapp\build>git branch
  master
* responsivenavigation

En este caso, 8a75b001096536b3216022484af3026aa9c7bb5b era un antiguo compromiso que pertenecía a la rama master .




Para los usuarios de Git GUI, puede visualizar todo el historial (si es necesario) y luego hacer clic con el botón derecho en la confirmación de la que desea bifurcar e ingresar el nombre de la rama.




Related

git branch git-branch