2011-07-26 15 views
10

he llamado una rama "desarrollar" en repo desnuda a distancia "centro" y tengo una copia de pago de la rama desarrollar en mi repositorio git local (usuario poomalai). He eliminado (git rm --cached) un archivo (Mydirectory/myfile.php) de otra copia de pago (usuario raj) y lo he enviado al repositorio del hub.git dice "Los siguientes archivos del árbol de trabajo sin seguimiento serían sobrescritos por la caja" cuando se cambia ramas

Ahora cuando selecciono los cambios desde el concentrador a "poomalai" funcionó bien y recibí el mensaje de confirmación de eliminación de archivos en el registro de git. He agregado el archivo en el archivo .gitignore en el usuario poomalai. Ahora he creado el archivo en mi repositorio local (usuario poomalai).

Ahora el archivo ya no está en el control de versiones y git no rastrea los cambios en el archivo.

Pero cuando trato de cambiar la rama a otra, que dice lo siguiente

error: The following untracked working tree files would be overwritten by checkout: 
    Mydirectory/myfile.php 
Please move or remove them before you can switch branches. 
Aborting 

Cuando quito el archivo con el comando rm linux, soy capaz de cambiar ramas. Si vuelvo a crear el archivo, nuevamente arroja el mismo error. Necesito que el archivo esté en el directorio pero no debe ser rastreado por git.

me trataron siguientes comandos:

git rm ----> says fatal: pathspec 'diamonds_webservice/dbconnect.php' did not match any files 

git gc 
git reset --hard HEAD 
git pull 

nada funciona. Por favor, que alguien me ayude

Respuesta

7

Esto podría ser posible porque la el archivo se añade a la repo en la 'rama de destino', asegúrese de que el archivo es git rm 'ed de la 'rama de destino', y luego tratar de ramas de conmutación.

Como dijo charles, git lo hace para garantizar la integridad de los datos, para que no se pierda nada al cambiar de directorio.

+1

Estupendo. Esto funciona bien. De modo que tengo que recuperar el archivo de todas las ramas que se crean antes de la eliminación del archivo del concentrador. Gracias – pooamlairaj

+2

¿Cómo hacemos "git rm" desde una sucursal que no podemos pagar? – brazorf

1

Es bueno que git te lo advierta, porque si cambias a una rama que no tiene el archivo borrado ... lo eliminarás. De modo que lo está haciendo bien, elimínelo (o cambie el nombre) antes de verificar una rama que lo haya eliminado.

Así que es solo que a Git le importan sus datos antes de sobrescribirlos, ya que no se han podido recuperar después del pago.

+1

Pero es una tarea tediosa y cada uno cada vez que debería cambiar el nombre del archivo, etc. ¿Por qué Git no solo ignora el archivo y no rastrea y no aborta el interruptor de la rama? – pooamlairaj

+1

Debido a que el interruptor se sobreponen a la rama (o eliminar) los datos versionados (su ahora-sin seguimiento en archivos) – CharlesB

+0

http://stackoverflow.com/questions/7630693/git-warning-of-file-overwriting-due-to-supposedly- archivos sin seguimiento puede usar algo como 'rm git checkout xyz 2> & 1 | sed "s/^ [^ \ t].*// g "' (donde es shift- ~) para eliminar automáticamente esos archivos –

0

Lo único que trabajó para mí:

en Android Studio - van a registrar evento - clic 'verlos' hipervínculo. - luego presione manualmente la barra menos para eliminar los archivos en la ventana emergente.

(porque era sólo 4-5 archivos Retitulé los archivos primero) tuve que hacerlo dos veces, ya que algunos elementos no se eliminan en el primer intento ...

Cuestiones relacionadas