Pregunta

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

puedo ver el hash de cada commit.

¿Fue útil?

Solución

Se puede crear la rama a través de un hash:

git branch branchname <sha1-of-commit>

o usando una referencia simbólica:

git branch branchname HEAD~3

Para la comprobación de la rama al crearlo, el uso

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

Otros consejos

Para hacer esto en github.com:

  1. Vaya a su proyecto.
  2. Haga clic en el "Cometa".
  3. Haga clic en la <> ( "Navegar por el repositorio en este momento de la historia") en el commit desea rama de.
  4. Haga clic en el "árbol: xxxxxx" en la parte superior izquierda. Justo debajo de la barra de estadísticas de lenguaje, obtendrá la opción de "Buscar o Crear Rama" (sólo tiene que escribir un nuevo nombre de la sucursal allí)  Rama de la confirmación anterior

La magia se puede hacer por git reset .

  1. Crea una nueva rama y el interruptor a la misma (por lo que todas sus últimas confirmaciones se almacenan aquí)

    git checkout -b your_new_branch

  2. Cambiar a volver a su sucursal de trabajo anterior (asumir que es maestro)

    git checkout master

  3. Eliminar las últimas x confirmaciones, mantener limpia maestro

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

A partir de este momento, todos los últimos x cometa, está sólo en la nueva rama, no en su rama anterior de trabajo (principal) más.

Si no está seguro de qué comprometerse desea rama de antelación se puede comprobar compromete fuera y examinar su código (véase la fuente, compilación, prueba) por

git checkout <sha1-of-commit>

Una vez que encuentre el comprometerse desea rama de usted puede hacerlo desde dentro del compromiso (es decir, sin tener que volver a la primera maestra) simplemente mediante la creación de una rama de la forma habitual:

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

Una forma rápida de hacerlo en tu repositorio Github sería como sigue:

  • Para la específica de confirmación desde su sucursal
  • Al lado de la Identificación del SHA, haga clic en 'Explorar el repositorio en este momento de la historia'
  • Aquí puede crear una nueva rama de esta cometen introducir descripción de la imagen aquí

Simplemente ejecute:

git checkout -b branch-name <commit>

Por ejemplo:

git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8

El comando checkout con el parámetro -b creará una nueva rama y que va a cambiar que a él

Para hacer esto en Eclipse:

  • Vaya a "Git Repository Exploring" Perspectiva.
  • Ampliar "etiquetas" y elige el envío de datos desde la que desea crear rama.
  • Haga clic derecho sobre la confirmación y seleccione "Crear Rama".
  • Proporcionar un nombre de la sucursal.

Se va a crear una sucursal local para usted. Entonces cada vez que se presiona sus cambios, su rama se inserta en el servidor remoto.

Una gran pregunta relacionada es: ¿Cómo diablos qué resolver esto mediante la opción --help de git? Vamos a probar esto:

git branch --help

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

búsqueda entre el texto que sigue a la palabra "compromiso". Nos encontramos con 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, se centran en esta línea de la galimatías:

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

Condensar que a esto:

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

Y hecho.

Puede hacerlo en las pertenencias.

  1. Haga clic en el commit
  2. En la parte superior derecha de la pantalla haga clic en "Marcar esta confirmación"
  3. A continuación, puede crear la nueva rama de la etiqueta que acaba de crear.

Yo era capaz de hacerlo de esta manera:

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

Cuando se debe introducir el valor de salto. 0 es la última, 1 es el anterior, el 2 es el commit antes de eso, etc.

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 viejo y cometer perteneciente a la rama master.

Ir a una confirmación en concreto de un repositorio git

A veces, cuando se trabaja en un repositorio git desea volver a una determinada comprometerse (revisión) para tener una instantánea de su proyecto en un momento específico. Para hacer que todo lo que el hash SHA-1 de la cometen los que se puede encontrar fácilmente comprobar el registro con el comando necesita:

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

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

Ahora que ya sabe el hash del cometen quiere ir a usted puede utilizar uno de los 2 comandos siguientes:

git checkout HASH

o

git reset --hard HASH

Pedido

git checkout <commit> <paths>

Le dice a Git para reemplazar el actual estado de los caminos con su estado en el commit dado. Las rutas pueden ser archivos o directorios.

Si no se da ninguna de las ramas, git asume cometer la cabeza.

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

Si se da la ruta, Git mueve HEAD a lo dado comprometerse (cambiando así la cometéis está sentado y trabajando).

git checkout branch //means switching branches.

Restablecer

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

Si usted está en una rama (por lo general debe ser), y HEAD esta rama se mueven a cometer.

Si se encuentra en estado HEAD individual, git reset no sólo se mueven HEAD. Para restablecer una rama, en primer lugar comprobar que funciona.

Si usted quiere saber más acerca de la diferencia entre git reset y git checkout Yo recomendaría leer git el blog oficial .

Seleccione Commit

Para los usuarios Git GUI se puede visualizar toda la historia y (si es necesario) a continuación, haga clic derecho en el envío de datos que desea rama de e introduzca el nombre de la sucursal.

Introduce el nombre de Rama

Visualizar toda la historia

Para hacer la respuesta aceptada en Visual Studio 2015 y 2017:

Haga clic en alteraciones

Haga clic en alteraciones (flecha roja arriba)

Haga clic para ver el historial acciones

Haga clic en Acciones (flecha roja arriba) y haga clic en Ver historial en el menú desplegable

Y nueva pestaña se abrirá:

historial

Y usted debe pulsar en el confirmación anterior que desea que su código para volver a: derecho haga clic en la confirmación anterior

Escoja a la caja de una nueva rama y listo!

A continuación, aunque no forma parte de la pregunta OP, pero lo hacen tanto mucho y este es un paso truco, al menos para mí: si desea volver a una confirmación anterior, sin pago y envío de una nueva rama, no elija revertir(!?); usted debe elegir redefinir --mixed o --hard:

click derecho del confirmación anterior y redefinir

si utiliza árbol de código fuente que es bastante sencillo.

  • Haga clic derecho en el envío de datos desde donde se tiene que crear una nueva rama
  • Haga clic en 'rama'
  • Nombre Tipo de nueva sucursal en el cuadro de diálogo apareció y haga clic en 'Crear rama'

Esto crea la rama con un solo comando:

git push origin <sha1-of-commit>:refs/heads/<branch-name>

Yo prefiero esta forma mejores que los publicados anteriormente, ya que crea la rama de inmediato (no requiere un comando de impulso adicional después).

Si usted está buscando una solución basada en la línea de comandos, puede ignorar mi respuesta. Me va a sugerir que use GitKraken . Es un cliente de interfaz de usuario git extraordinaria. Se muestra el árbol de Git en la página principal. Usted puede mirar en ellos y saber lo que está pasando con el proyecto. Sólo elige comprometerse específica, haga clic en él y seleccione la opción 'Crear una sucursal aquí'. Se le dará un cuadro de texto para introducir el nombre de la sucursal. Introduzca nombre de la sucursal, seleccione 'OK' y ya está. Es realmente muy fácil de usar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top