Si tengo n commits, ¿cómo puedo ramificar desde el n-3 commit?
Puedo ver el hash de cada commit.
git
branch
git-branch
Dole Douglas
fuente
fuente
git push origin BRANCH_NAME
<sha1-of-commit>
ejecucióngit checkout -b <name-of-branch> <sha1-of-commit>
pero si la rama ya existegit checkout -B <name-of-branch> <sha1-of-commit>
Para hacer esto en github.com:
fuente
La magia se puede hacer mediante git reset .
Cree una nueva rama y cámbiela (para que todas sus últimas confirmaciones estén almacenadas aquí)
git checkout -b your_new_branch
Vuelva a su rama de trabajo anterior (suponga que es maestra)
git checkout master
Elimine las últimas confirmaciones x, 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, ya no en su rama de trabajo anterior (maestra).
fuente
git reset --hard
no es una buena idea si ya ha empujado el origen se comprometen a ...git push --force
hacerlo si ya había empujado la rama antesSi no está seguro de qué confirmación desea bifurcar de antemano, puede verificar las confirmaciones y examinar su código (ver fuente, compilar, probar)
una vez que encuentre la confirmación de la que desea bifurcarse, puede hacerlo desde la confirmación (es decir, sin volver al maestro primero) simplemente creando una bifurcación de la manera habitual:
fuente
fuente
git branch branchname <sha1-of-commit>
" (de la respuesta aceptada)?git checkout -b
para crear una nueva sucursal.Una forma rápida de hacerlo en su repositorio de Github sería la siguiente:
fuente
Simplemente ejecute:
Por ejemplo :
El
checkout
comando con el parámetro-b
creará una nueva rama Y lo cambiará a élfuente
git fetch
ygit branch
ordene en la carpeta de su proyecto utilizando el terminal, luego verifique si la rama de la característica existe, si este es el caso, entonces sí, por supuesto que no podrá crear una rama a partir de ramas eliminadas, también podría revertir la eliminación de una rama en caso de que rama se fueUna gran pregunta relacionada es: ¿Cómo diablos lo resuelves usando la
--help
opción de git? Intentemos esto:Vemos esta salida:
Gobbledegook.
Busque en el texto posterior la palabra "commit". Encontramos esto:
¡Estamos llegando a alguna parte!
Ahora, concéntrate en esta línea del gobbledegook:
Condense eso a esto:
Y hecho.
fuente
Para hacer esto en Eclipse:
Creará una sucursal local para usted. Luego, cada vez que envíe sus cambios, su sucursal se enviará al servidor remoto.
fuente
Puedes hacerlo en Stash.
fuente
Pude hacerlo así:
Donde debe ingresar el valor de omisión. 0 es el último, 1 es el anterior, 2 es el commit anterior, etc.
fuente
HEAD~1
(donde 1 especifica 1 commit back)?Esto crea la rama con un comando:
Prefiero esta manera mejor que las publicadas anteriormente, porque crea la rama inmediatamente (no requiere un comando de inserción adicional después).
fuente
Usando Sourcetree | La forma más fácil.
fuente
Esto es lo que hice:
En este caso,
8a75b001096536b3216022484af3026aa9c7bb5b
was y old commit pertenecientes a lamaster
sucursal.fuente
Ir a un commit particular de un repositorio git
A veces, cuando se trabaja en un repositorio de git, desea volver a una confirmación específica (revisión) para tener una instantánea de su proyecto en un momento específico. Para hacerlo todo lo que necesita es el hash SHA-1 del commit que puede encontrar fácilmente revisando el registro con el comando:
que le dará una lista compacta de todos los commits y la versión corta del hash SHA-1.
Ahora que conoce el hash del commit al que desea ir, puede usar uno de los siguientes 2 comandos:
o
revisa
git checkout <commit> <paths>
Le dice a git que reemplace el estado actual de las rutas con su estado en el commit dado. Las rutas pueden ser archivos o directorios.
Si no se da ninguna rama, git asume el compromiso HEAD.
Si no se proporciona ninguna ruta, git se mueve
HEAD
a la confirmación dada (cambiando así la confirmación en la que está sentado y trabajando).Reiniciar
Si está en una rama (normalmente debería estarlo),
HEAD
y esta rama se mueve para confirmar.Si está en
HEAD
estado desconectado , git reset solo se mueveHEAD
. Para restablecer una rama, primero compruébelo.Si desea saber más sobre la diferencia entre git reset y git checkout, le recomendaría que lea el blog oficial de git .
fuente
git log --abbrev-commit --pretty=oneline
se pueden abreviar agit log --oneline
Para los usuarios de Git GUI, puede visualizar todo el historial (si es necesario) y luego hacer clic con el botón derecho en el compromiso del que desea bifurcarse e ingresar el nombre de la bifurcación.
fuente
Para hacer la respuesta aceptada en Visual Studio 2015 y 2017:
Haga clic en alteraciones (flecha roja arriba)
Haga clic en Acciones (flecha roja arriba) y haga clic en Ver historial en el menú desplegable
Y se abrirá una nueva pestaña:
Y debe hacer clic derecho en la confirmación anterior a la que desea que su código vuelva:
Elija pagar una nueva sucursal y ¡listo!
A continuación, aunque no es parte de la pregunta de OP, pero hago mucho y este es un paso engañoso, al menos para mí: si desea volver a una confirmación anterior, sin pagar una nueva rama, ¡NO elija revertir (! ?); debe elegir redefinir --mixed o --hard:
fuente
si usas el árbol fuente es bastante sencillo.
fuente
Si está buscando una solución basada en la línea de comandos, puede ignorar mi respuesta. Te voy a sugerir que uses GitKraken . Es un extraordinario git UI client. Muestra el árbol Git en la página de inicio. Puedes mirarlos y saber qué está pasando con el proyecto. Simplemente seleccione una confirmación específica, haga clic derecho sobre ella y seleccione la opción 'Crear una rama aquí'. Le dará un cuadro de texto para ingresar el nombre de la sucursal. Ingrese el nombre de la sucursal, seleccione 'Aceptar' y estará listo. Es realmente muy fácil de usar.
fuente