tutorial melon corazon code git github revision gist

code - github gist corazon de melon



¿Cómo eliminar una revisión específica de un github gist? (5)

Añadiendo a la respuesta de meesern. Cuando intente aplastar o reparar y reajustar - continúe, se le solicita que agregue un comentario o --allow-empty-message . Esto lleva mucho tiempo, y de alguna manera mis compromisos no desaparecieron de la lista de revisión de la esencia al hacerlo de esa manera.

Encontré una solución más simple: simplemente puede eliminar las líneas de confirmación innecesarias en su lista de :wq! , git rebase --continue , y git push -f .

Creé un Gist en GitHub y vi información que no quiero que nadie vea. He actualizado el archivo desde entonces, pero todos todavía pueden acceder a la revisión anterior del archivo.

Excepto eliminar la Gist, ¿hay alguna forma de eliminar esa revisión en particular definitivamente?

Vi que no soy el único que tiene ese tipo de problema ( Git: eliminar una sola revisión remota ) pero no logré eliminar la revisión. El proceso indicado aquí parece ayudar a eliminar algunos archivos. Quiero eliminar toda la revisión.


Github tiene una página de ayuda para eliminar datos confidenciales:

http://help.github.com/removing-sensitive-data/

Como los gists son solo depósitos de git, deberías poder clonar localmente tu gist, hacer la limpieza allí y hacer un empujón forzado para sobrescribir la versión de github con el repo limpio.

Sí, después de pensarlo: si <commit> es el compromiso que desea "eliminar", haga

git rebase -i <commit>^

marque la línea para <commit> como edit , guardar y salir.

git configurará el directorio de trabajo al estado después de que haya enviado <commit> . Arregle el archivo, use git add y git commit --amend para arreglar el commit. Entonces haz git rebase --continue . Si lo único que hizo la siguiente confirmación fue eliminar los datos confidenciales, probablemente se eliminará automáticamente porque no contiene ningún cambio después de la confirmación ahora enmendada.

Luego, haga un git push -f para forzar la actualización (porque ahora no es de avance rápido, lo que significa que cambia el historial de git ya publicado).


La respuesta aceptada es buena pero un poco difícil de seguir. Aquí está la misma respuesta pero un poco más dulce.

Como dice Tilman Vogel, las gistas son solo repositorios, por lo que este enfoque funciona tanto para los repositorios de github como para los gists.

Supongamos que solo hay una versión que contiene una contraseña que no desea mostrar. Ha registrado la nueva versión con la contraseña eliminada y desea deshacerse de la versión anterior. Debería poder adaptar este proceso si hay varias confirmaciones que muestren la contraseña.

Lo primero es que la reparación debe hacerse en su máquina local (no en github). Para hacer esto comienza por clonar la esencia localmente. La página de gist en github debería mostrarle cómo crear un clon privado si hace clic en la URL del clon privado. Algo como:

git clone [email protected]:421xxx1.git gist-421xxx1

Esto le da una copia local que necesita reajustar (lo que significa muck around con las versiones).

cd gist-421xxx1 git rebase -i eexxaa^

Donde eeccaa es la (primera) versión que contiene la contraseña. Puede obtener este número de la columna de revisiones de la página principal. Se requiere el ^ El comando significa "permítame cambiar las versiones de eexxaa a la última, interactivamente. El comando abre un editor con un comando en cada línea para cada versión en el repositorio. El comando predeterminado es ''elegir'', que significa ''usar o conservar esta versión''.

Las primeras líneas en el editor deben verse como

pick eexxaa <- the version with the password pick ffxxbb <- the first version without the password

Cambiar esto a

pick eexxaa squash ffxxbb

Es decir, cambie la palabra ''pick'' a ''squash'' en la versión sin la contraseña. Esto le pedirá al rebase que aplaste la nueva versión (sin contraseña) en la versión anterior (que lleva la contraseña), esencialmente eliminando la versión eexxaa. Obviamente, sus versiones serán distintas de eexxaa o ffxxbb ¡no use literalmente eexxaa o ffxxbb en cualquier lugar!

Como @kand señala, debes squash cada versión que contenga la contraseña.

En el editor guarde y salga (si es vi: x). El rebase ahora debería abrir un nuevo editor que muestre los mensajes de confirmación para las dos versiones y que solicite un único mensaje de confirmación combinado. Para una idea general, es muy probable que estos mensajes estén vacíos, pero es necesario que pongas algo aquí o la rebase se cancelará. Escriba un mensaje, guárdelo y salga y la rebase debería completarse.

Ahora tiene un repositorio sin la versión que contiene la contraseña. Para devolver esto al uso esencial:

git push -f

Esto forzará los cambios en el repositorio de github. Presione actualizar y debería poder verificar en el navegador que la versión ofensiva ha pasado de la columna de revisiones en el lado derecho.

¡Eso es!



Si no está preocupado por mostrar cualquiera de las revisiones en la esencia, puede hacer lo siguiente para eliminar todo el historial y solo mostrar una revisión.

git clone some-gist-repo cd some-gist-repo git rebase -i --root $tip

Podrías ver todas las confirmaciones para esa esencia en tu editor. Solo elige el primero y reemplaza todo lo demás con s o squash . Una vez hecho esto, guarde y agregue un mensaje de confirmación y, a continuación, realice una acción forzada para dominar de esta forma y estará bien.

git push -f origin master

La única revisión que sería visible es la adición de archivo (s) y eso es todo.