Rama del commit anterior usando git

Si tengo n confirmaciones, ¿cómo puedo cambiar de las confirmaciones n-3?

Veo el hash de cada cometer.

1372
12 мая '10 в 10:21 2010-05-12 10:21 dole doug se establece el 12 de mayo de 2010 a las 10:21 a.m. 2010-05-12 10:21
@ 15 respuestas

Puedes crear una rama a través del hash:

 git branch branchname <sha1-of-commit> 

O utilizando un enlace simbólico:

 git branch branchname HEAD~3 

Para emitir una rama cuando la creas, usa

 git checkout -b branchname <sha1-of-commit or HEAD~3> 
1931
12 мая '10 в 10:24 2010-05-12 10:24 Respuesta dada por CB Bailey el 12 de mayo de 2010 a las 10:24 2010-05-12 10:24

Para hacer esto en github.com:

border=0
  1. Ve a tu proyecto.
  2. Haga clic en "cometer".
  3. Haga clic en <> ("Ver repositorio en este punto de la historia") en la confirmación desde la que desea bifurcar.
  4. Haga clic en "árbol: xxxxxx" en la parte superior izquierda. Justo debajo de las estadísticas de idioma, obtendrás la opción "Buscar o crear una rama" (solo ingresa el nuevo nombre de la rama) 2019
192
09 авг. La respuesta está dada por OneSolitaryNoob 09 ago. 2013-08-09 01:08 '13 a la 1:08 2013-08-09 01:08

La magia se puede realizar usando git reset .

  • Cree una nueva rama y cámbiela (para que todas sus confirmaciones recientes se almacenen aquí)

    git checkout -b your_new_branch

  • Regrese a su rama de trabajo anterior (suponga que ella es una maestra)

    git checkout master

  • Retire las últimas x fijaciones, mantenga el maestro limpio

    git reset --hard HEAD~x # in your case, x = 3

A partir de este momento, todas las últimas confirmaciones x están solo en la nueva rama, y ​​no en la rama de trabajo anterior (maestro).

60
03 авг. La respuesta la da Jing Li 03 ago. 2015-08-03 12:04 '15 a las 12:04 2015-08-03 12:04

Si no sabe con qué compromiso desea unirse a una rama, puede verificar la corrección y verificar su código (ver la fuente, compilar, verificar) en

 git checkout <sha1-of-commit> 

tan pronto como encuentre la fijación que desea destruir, puede hacerlo desde el interior de la fijación (es decir, sin volver al primer maestro), simplemente creando una rama de la forma habitual:

 git checkout -b <branch_name> 
59
10 февр. La respuesta es dada el 10 de febrero. 2014-02-10 19:43 '14 a las 19:43 2014-02-10 19:43
 git checkout -b <branch-name> <sha1-of-commit> 
18
11 июля '17 в 10:11 2017-07-11 10:11 La respuesta la da Tyler Long el 11 de julio de 2017 a las 10:11 2017-07-11 10:11

La forma rápida de hacer esto en su registro de Github es la siguiente:

  • Encuentra una solución específica de tu hilo.
  • Junto a la ID de SHA, haga clic en "Repo Review en este punto del historial"
  • Aquí puedes crear un nuevo hilo desde este commit. 2019
14 янв. La respuesta la da Vatsal Parekh 14 jan. 2017-01-14 20:51 '17 a las 8:51 pm 2017-01-14 20:51

Para hacer esto en Eclipse:

  • Vaya a la perspectiva "Exploración del repositorio Git".
  • Expanda "Etiquetas" y seleccione la confirmación desde la que desea crear una rama.
  • Haga clic derecho en la confirmación y seleccione "Crear rama".
  • Especifique el nombre de la rama.

Esto creará una sucursal local para usted. Luego, cuando envíe sus cambios, su sucursal se enviará al servidor remoto.

4
17 мая '13 в 15:03 2013-05-17 15:03 Saurabhcdt dio la respuesta el 17 de mayo de 2013 a las 15:03 2013-05-17 15:03

Puedes hacer esto en Stash.

  • Pulse cometer
  • En la parte superior derecha de la pantalla, haga clic en "Marcar esta confirmación"
  • A continuación, puede crear una nueva rama a partir de la etiqueta que acaba de crear.
4
18 янв. Respuesta dada por David Ruan el 18 de enero. 2017-01-18 20:20 '17 a las 20:20 h 2017-01-18 20:20

Una excelente pregunta: ¿cómo entiendes esto, usando el parámetro --help para git? Probemos esto:

 git branch --help 

Vemos esta conclusión:

 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 la palabra "cometer" en el siguiente texto. Lo encontramos:

  <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. 

¡Llegamos a alguna parte!

Ahora enfócate en esta línea de engullidos:

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

Agregue esto a lo siguiente:

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

Y hecho

3
19 июля '16 в 19:35 2016-07-19 19:35 La respuesta se da a Purplejacket el 19 de julio de '16 a las 19:35 2016-07-19 19:35

Yo podría hacerlo así:

 git branch new_branch_name 'git log -n 1 --skip 3 --format=%H' 

Donde debe ingresar el valor de omisión. 0 - último, 1 - anterior, 2 - cometer antes de eso, etc.

3
01 февр. La respuesta la da Mike Graf el 1 de febrero. 2013-02-01 00:36 '13 a las 0:36 2013-02-01 00:36

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 y el antiguo compromiso era propiedad de la rama master .

1
14 июня '18 в 11:23 2018-06-14 11:23 La respuesta es dada por Jaime Montoya el 14 de junio de 18 a las 11:23. 2018-06-14 11:23

Puedes crear una rama usando el hash de este commit,

 git branch branchname <sha1 of the commit> 
1
15 июля '16 в 17:23 2016-07-15 17:23 la respuesta la da el usuario 3022012 15 de julio de 2016 a las 17:23 2016-07-15 17:23

Ir a un commit específico del repositorio git

A veces, al trabajar con un repositorio git, desea volver a un compromiso específico (revisión) para obtener una instantánea de su proyecto en un momento específico. Para hacer esto, necesita el hash SHA-1 de la confirmación, que puede encontrar fácilmente consultando el registro con el comando:

 git log --abbrev-commit --pretty=oneline 

que le dará una lista compacta de todas las confirmaciones y una versión corta del hash SHA-1.

Ahora que conoce el hash de confirmación al que desea ir, puede usar uno de los siguientes 2 comandos:

 git checkout HASH 

o

 git reset --hard HASH 

echa un vistazo

git checkout <commit> <paths>

Le dice a git que reemplace el estado actual de las rutas con su estado en esta confirmación. Las rutas pueden ser archivos o directorios.

Si no se especifica una rama, git acepta una confirmación HEAD.

 git checkout <path> // restores path from your last commit. It is a 'filesystem-undo'. 

Si no se especifica la ruta, git mueve HEAD a la confirmación dada (cambiando así la confirmación en la que está sentado y trabajando).

 git checkout branch //means switching branches. 

restablecer

 git reset <commit> //re-sets the current pointer to the given commit. 

Si está en una rama (como debería ser), HEAD y esta rama se moverán para confirmar.

Si estás en un estado HEAD deshabilitado, git reset solo mueve el HEAD . Para restablecer una rama, primero echa un vistazo.

Si desea saber más sobre la diferencia entre el restablecimiento de git y el proceso de pago de git, le recomiendo que lea el blog oficial de git .

0
20 июля '18 в 18:47 2018-07-20 18:47 La respuesta está dada por Lyes CHIOUKH , 20 de julio de 18 a 18:47 2018-07-20 18:47
28 авг. la respuesta la da el usuario 3070485 28 de agosto. 2018-08-28 15:04 '18 a las 3:04 pm 2018-08-28 15:04

Sólo ejecuta:

 git checkout -b branch-name <commit> 

Por ejemplo:

 git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8 

El comando de checkout con la opción -b creará una nueva rama y lo cambiará a él.

0
11 янв. La respuesta se da d1jhoni1b 11 de enero. 2019-01-11 01:35 '19 a la 1:35, 2019-01-11 01:35

Otras preguntas sobre o Haz una pregunta