He cometido accidentalmente log/test.log pero nunca lo he pulsado. Desde entonces he hecho un truco para deshacerme de él. Pero cuando intento presionar, sigo recibiendo una gran cantidad de datos que intentan ser transferidos. ¿No debería el robot corregir ese problema? Si no, ¿cómo podría solucionarlo?git push después de eliminar el archivo grande
Respuesta
No revierte la confirmación y luego presione porque el archivo enorme aún se cargará en el historial.
Teniendo en cuenta que aún no se ha empujado y que el cometer desea volver a realizar es la más reciente, retire esa confirmación de su historia:
$ git reset HEAD^
Esto devolverá el índice para el estado en que se en la confirmación principal (HEAD^
). Ahora tiene un mulligan: agregue y comprométase de la manera que pretendía la primera vez.
Si ha realizado otras confirmaciones posteriores, necesitará git rebase -i <commit>
donde <commit>
es el SHA-1 del padre del compromiso incorrecto.
Por ejemplo (y anote el SHA-1 serán diferentes en tu repositorio)
$ git rebase -i 57d0b28
te deja en un editor que se asemeja a
pick 366eca1 This has a huge file pick d975b30 delete foo pick 121802a delete bar # Rebase 57d0b28..121802a onto 57d0b28 # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted. #
Reemplazar pick
con edit
en la línea con el commit pesado
edit 366eca1 This has a huge file pick d975b30 delete foo pick 121802a delete bar
Guardar y salir su editor para volver a su concha, donde puedes encontrar un mensaje de la forma
Stopped at 366eca1... This has a huge file You can amend the commit now, with git commit --amend Once you are satisfied with your changes, run git rebase --continue
A partir de ahí, se elimina el archivo infractor (--cached
elimina el archivo de sólo el índice)
$ git rm --cached big-nasty-file rm 'big-nasty-file'
modificar la confirmación
$ git commit --amend
y terminar el rebase
$ git rebase --continue
Si no ha pulsado, puede usar git rebase -i
para editar su historial de confirmaciones, eliminando tanto el add
como el rm
. La única advertencia es que debe tener cuidado de no editar las confirmaciones que ya se han enviado.
http://blog.madism.org/index.php/2007/09/09/138-git-awsome-ness-git-rebase-interactive
Se preguntó si todavía se puede hacer esto si hay otros cambios en la confirmación y la otra confirmación siguientes éste. Depende. Debería poder editar/eliminar cualquier compromiso sin prisa, no solo el más reciente. Pero la rebase puede fallar si los cambios posteriores dependen en gran medida de los cambios en la confirmación eliminada (p. Ej., Usted agregó un archivo y luego lo editó en una confirmación posterior). Si elimina una confirmación, perderá todos los cambios en esa confirmación. No sé de una forma de eliminar un solo cambio de una confirmación. Si no desea perder los otros cambios en la confirmación test.rb, puede generar un parche (con git show <commitid> > /tmp/patch
o con las funciones integradas git patch
) antes de eliminar la confirmación. Luego edite su archivo de parche para eliminar el test.rb grande, pero deje los cambios deseados y vuelva a aplicar el parche a la cabeza.
Si usted tiene el problema que he mencionado antes, donde no rebase (o cree que sería un error), usted podría ahorrar parches para todo de sus confirmaciones después de que el problema se comprometen, eliminar a todos ellos, y volver a aplicar en orden.
Aunque no he pulsado, he realizado varios commits desde entonces. ¿La rebase sigue siendo una opción? (La confirmación con el registro/prueba.rb accidental tenía un montón de archivos) – Daniel
- 1. Cambio de autoría git git push después
- 2. Git: Stop git push
- 3. git push .git/archivo de descripción
- 4. Heroku: cómo "git pull" después de 'git push -f'
- 5. 'git push'
- 6. Git ignore push solo
- 7. git push se bloquea después de pulsar algunos
- 8. ¿Funciona `git push` como abreviatura de` git push origin newfeature`?
- 9. Git: cómo eliminar el archivo de la confirmación histórica?
- 10. git post-push hook?
- 11. Eliminar archivo después de cargar
- 12. Problemas de Git con git push --todos
- 13. development.log no inicia sesión después de eliminar el archivo
- 14. eliminar el archivo del historial de git no funciona
- 15. eliminar un archivo de control de GIT
- 16. xcode git pull/push crash
- 17. git push, no push all local commits
- 18. git - eliminar archivo del repositorio
- 19. Git pre-push hooks
- 20. git cómo desactivar push
- 21. Git Push Not Working
- 22. Git push rechazado
- 23. git push rejected
- 24. ¿Cómo elimino un archivo grande cometido erróneamente en git
- 25. git push -f vs. +
- 26. ¿Cómo puedo deshacer un commit de git DESPUÉS de un git push?
- 27. Cómo push/pull git rebase
- 28. hg-git push silenciosamente falla
- 29. Git push - paquete subóptimo - memoria
- 30. ¿Puedo deshacer el último git push?
¿Cómo se obtienen las direcciones SHA1 para sus confirmaciones? – Daniel
@Daniel Ejecute 'git log' o' gitk', por ejemplo. –