2012-06-17 8 views
12

Estamos usando git para el control de versiones y ahora estamos recibiendo muchas advertencias cuando intentamos cargar la versión más reciente. Soy nuevo en git y no tengo paciencia para las restricciones, ¿hay alguna forma de eliminar todo y subir la versión actual?Borrar todo y cargar la nueva versión

Esto es lo que obtengo ahora cuando intento cargar.

$ git push origin master 
Username for 'https://code.google.com': 
Password for 'https://<removed>@code.google.com': 
To https://code.google.com/p/<removed>/ 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to 'https://code.google.com/p/<removed>/' 
hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') 
hint: before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 
+2

Ayudaría mostrar la secuencia de comandos que está intentando y la salida que obtiene –

+0

"eliminar todo y cargar la versión actual" suena como si no estuviera usando git para el control de versiones, pero lo está utilizando como un sustituto de una herramienta de publicación. ¿Puedes publicar las advertencias que estás recibiendo?Incluso si no tienes la paciencia para entenderlos, alguien más tendrá que hacerlo si van a poder ayudar. –

+0

Pegué las pistas que estoy recibiendo ahora. Entendí lo que obtuve antes, pero me pareció innecesario, ya que el código en mi computadora funcionaba bien y el código en la versión en línea estaba desactualizado. Solo quería comenzar de nuevo. ¿Por qué es tan asqueroso? No sé – zehelvion

Respuesta

18

1.) Eliminar todo en su carpeta de repositorio

2.) ejecutar git rm * para contar git para eliminar todos los archivos (consulte con git status si hay algún archivo unstaged izquierda)

3.) hacen un git commit -a -m "commitmessage" un git push origin master para eliminar todos los archivos en el servidor remoto git

4.) comprobar si tiene un repositorio remoto vacía ahora

5.) copia todos los archivos nuevos a la carpeta de repositorio local

6.) ejecutar git add * para contar git para agregar todos los archivos nuevos (consulte con git status si hay algún archivo unstaged izquierda)

7.) confirmar y enviar los nuevos archivos

Ahora debe tener la versión en su repositorio remoto de git.

+0

Hola, pegué el resultado que estoy obteniendo ahora, ¿podría ayudarme? – zehelvion

+1

¿por qué no se puede usar 'git push -f'? –

+0

Escribí la respuesta antes de saber que el problema es el comando de inserción. Pensé que Arthur no sabe cómo "empezar de nuevo". En la pregunta editada, creo que 'git push -f' habría funcionado, aunque no estoy del todo seguro, si el repositorio de git remoto hiciera lo que esperas. –

12

No puede enviar porque hay una confirmación en el control remoto que no se fusiona con la confirmación que está intentando enviar. Si desea descartar todos los cambios que se encuentran actualmente en el control remoto, puede hacer algo como esto.

git fetch 
git merge -s ours origin/master 
git push origin master 

Tenga en cuenta que esta tira a la basura los cambios que se han introducido en el mando a distancia que no tiene en su repositorio local.

+0

solo para referencia futura, agregue '--allow-unrelated-history's al comando merge en las versiones más nuevas de git. –

2

Si desea eliminar permanentemente los archivos del repositorio remoto y en retrospectiva como si no fueran empujados en el primer lugar de empezar de nuevo, a continuación, en la base de this answer que podría hacer la siguiente

Ejecutar el siguiente localmente (Nótese la * borra todas las carpetas/archivos):

git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch *" -- --all 

Ahora es el momento de actualizar las referencias git localmente para aplicarla a olvidar toda la historia que tenía de esos archivos

rm -rf .git/refs/original/ 

git reflog expire --expire=now --all 

git gc --prune=now 

git gc --aggressive --prune=now 

Ahora empuje todos los cambios en el repositorio remoto con una fuerza para asegurar el repositorio remoto también borra todos los archivos

git push --all --force 

Esto limpiar el repositorio remoto como si alguna vez existió ningún archivo.

Cuestiones relacionadas