¿Hay alguna forma de eliminar todas las confirmaciones antes de una confirmación especificada y usar esa confirmación como inicial?Quitar confirmaciones antes del compromiso específico
Respuesta
Digamos que el nuevo más antigua de cometer hash es X y podemos usar y "newroot" "oldroot" temporalmente:
git checkout -b oldroot X
TREE=`git write-tree`
COMMIT=`echo "Killed history" | git commit-tree "$TREE"`
git checkout -b newroot "$COMMIT"
git rebase --onto newroot oldroot master
# repeat for other branches than master that should use the new initial commit
git checkout master
git branch -D oldroot
git branch -D newroot
git gC# WARNING: if everything's done right, this will actually delete your history from the repo!
que creará un 'newroot' comprometerse con el mismo contenido que el 'oldroot' cometer, pero sin ningún padre Luego, rebases todas las otras ramas en la nueva raíz, que debería estar en el historial de todas ellas.
EDIT: probado y arreglado; un poco más tarde, refinado un poco
Tenga en cuenta que el "historial de muertes" se convierte en el nuevo mensaje de confirmación para la confirmación inicial. Si quieres algo más, como el mensaje original, por ejemplo, simplemente canalíalo allí. –
La solución más fácil sería, Considere originalmente su sucursal tiene comprometerse principal y se realizó un compromiso primera, ahora también se realizó un comprometerse segundo en la parte superior de primera. Así que hay algo así como:
main->first->second
Ahora usted quiere tener segundo en la parte superior de principal en lugar de en la parte superior de la primera . Algo así como:
main->second->first or main->second
Simplemente puede hacer,
git rebase -i main
Esto le dará un shell interactivo donde se puede cambiar el orden de confirmaciones o eliminar cualquier commit de su elección.
- 1. Git: recuperar compromiso específico
- 2. Quitar confirmaciones de Git en una rama
- 3. Subversion: Cómo fusionar un compromiso específico
- 4. ¿Quitar caracteres después del carácter específico en la secuencia, luego quitar la subcadena?
- 5. Makefile - ../ quitar del camino
- 6. ¿Cómo apuntar a un compromiso específico SHA con capistrano deploy
- 7. ¿Cambiar el primer compromiso del proyecto con Git?
- 8. git ¿puedo acelerar el compromiso?
- 9. Git no muestra la cantidad de confirmaciones antes del origen que tengo, y lo quiero
- 10. Git: ¿Cómo clonar el primer compromiso?
- 11. Cómo quitar valor específico de la matriz usando jQuery
- 12. quitar fila de la tabla con el ID específico
- 13. Quitar del repositorio git (historia)
- 14. Quitar insignia del ítem tabbar
- 15. quitar Tomcat cabecera del servidor
- 16. Git: presionando confirmaciones modificadas
- 17. En Git, ¿cómo difiero al primer compromiso de mi sucursal?
- 18. ¿Cómo puedo configurar Git para confirmaciones locales mientras uso P4 para confirmaciones remotas?
- 19. cómo quitar rectángulo marco del diálogo personalizado
- 20. ¿El SHA-1 de confirmaciones se calcula solo en función del contenido del árbol?
- 21. Buscar primer commit específico para una rama
- 22. TortoiseHG: Quitar commit
- 23. primer hijo común de dos confirmaciones
- 24. ¿Presionas cada compromiso?
- 25. '&' antes del nombre del parámetro
- 26. Encontrar el elemento antes y después de un elemento específico
- 27. Seleccionar elemento específico antes de que otro elemento
- 28. Insertar nodo XML antes nodo específico usando C#
- 29. ¿Cómo eliminar las confirmaciones de git innecesarias?
- 30. octopress el primer compromiso
Sé que he visto un tutorial en algún lugar para hacer algo como esto ... Mostró cómo se puede mantener un repositorio histórico finalizando en commit X, y luego llevar commit X a HEAD y hacer un nuevo repositorio de ellos, con una anotación en X sobre cómo acceder al repos histórico. No puedo encontrarlo ahora, pero es posible. – Daenyth