gitignore y "Los siguientes archivos de árbol de trabajo sin seguimiento se sobrescribirían al finalizar la compra"


Así que agregué una carpeta a mi.archivo gitignore.

Una vez que hago un {[3] } me dice

# On branch latest
nothing to commit (working directory clean)

Sin embargo, cuando intento cambiar ramas obtengo lo siguiente:

My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:
    public/system/images/9/thumb/red-stripe.jpg
    public/system/images/9/original/red-stripe.jpg
    public/system/images/8/thumb/red-stripe-red.jpg
    public/system/images/8/original/red-stripe-red.jpg
    public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
    public/system/images/7/thumb/red-stripe-dark.jpg
    public/system/images/7/original/red-stripe-dark.jpg
    public/system/images/7/original/DSC07833.JPG
    public/system/images/6/thumb/red-stripe-bw.jpg
    public/system/images/6/original/website-logo.png
    public/system/images/6/original/red-stripe-bw.jpg
    public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/5/original/logocompv-colored-squares-100px.png
    public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/4/thumb/DSC_0001.JPG
    public/system/images/4/original/logo.png
    public/system/images/4/original/DSC_0001.JPG
    public/system/images/4/original/2-up.jpg
    public/system/images/3/thumb/logo2.gif
    public/system/images/3/original/logo2.gif
    public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/3/original/11002000962.jpg
    public/system/images/2/thumb/Profile Pic.jpg
    public/system/images/2/original/Profile Pic.jpg
    public/system/images/2/original/02 Login Screen.jpg
    public/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting

Esto es lo que mi .el archivo gitignore se ve así:

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*

¿Cómo puedo hacer que esto funcione para poder cambiar de rama sin eliminar esos archivos?

Si hago un cambio, ¿afectará a esos archivos? En otras palabras, si regresara a esta sucursal después todo sería perfecto como hasta mi último ¿comprometer?

No quiero perder esos archivos, simplemente no quiero rastrearlos.

Author: SherylHohman, 2011-02-01

26 answers

Parece que desea que los archivos ignorados, pero ya se han comprometido. .gitignore no tiene ningún efecto sobre los archivos que ya están en el repositorio, por lo que deben eliminarse con git rm --cached. El --cached evitará que tenga ningún efecto en su copia de trabajo y simplemente marcará como eliminado la próxima vez que confirme. Después de que los archivos se eliminan del repositorio a continuación, el .gitignore evitará que se añadan de nuevo.

Pero usted tiene otro problema con su .gitignore, eres usar comodines excesivamente y hacer que coincida menos de lo que esperas. En su lugar permite cambiar el .gitignore y prueba esto.

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/
 222
Author: Arrowmaster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-11 08:25:15

ADVERTENCIA: eliminará archivos no rastreados, por lo que no es una gran respuesta a la pregunta que se plantea.

También le di a este mensaje. En mi caso, no quería conservar los archivos, así que esto funcionó para mí:

Git 2.11 y posterior

git clean  -d  -fx .

Git anterior

git clean  -d  -fx ""

Http://www.kernel.org/pub/software/scm/git/docs/git-clean.html

  • -x significa que los archivos ignorados también se eliminan, así como los archivos desconocidos para git.

  • -d significa quitar sin recorrer los directorios además sin marcar archivos.

  • -f es necesario forzarlo a correr.

 845
Author: Scott Schafer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-24 15:26:43

Advertencia: Esto eliminará los archivos locales que no están indexados

Solo fuerza: git checkout -f another-branch

 482
Author: Régis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-20 15:23:27

Si está en OS X, puede ser porque el nombre de un archivo ha tenido ciertos caracteres de cambio de mayúsculas y minúsculas. Intente establecer la siguiente opción de configuración:

git config core.ignorecase true
 115
Author: mattbasta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-30 17:54:00

Git te está diciendo que quiere crear archivos (llamados public/system/images/9/... etc), pero ya tienes archivos existentes en ese directorio que no son rastreados por Git. Tal vez alguien más agregó esos archivos al repositorio Git, y esta es la primera vez que ha cambiado a esa rama?

Probablemente hay una razón por la que esos archivos están en tu rama develop pero no en tu rama actual. Es posible que tenga que preguntar a sus colaboradores por qué es eso.

¿cómo consigo esto? trabajando para que pueda cambiar de rama sin borrar esos archivos?

No puedes hacerlo sin hacer que los archivos desaparezcan de alguna manera. Podrías renombrar public a my_public o algo por ahora.

si regresara a esta rama después, ¿todo sería perfecto hasta mi último commit?

Si confirmas tus cambios, Git no los perderá. Si no confirmas tus cambios, entonces Git intentará muy duro no sobrescribir el trabajo que lo he hecho. Eso es lo que Git te está advirtiendo en primera instancia aquí (cuando intentaste cambiar de rama).

 41
Author: Greg Hewgill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-01 01:47:15

Hay un comando para esta delicada tarea (eliminar permanentemente archivos no rastreados)

git clean -i

Entonces git pull lo hará.

 21
Author: Abhishek Goel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-21 08:37:58

Desafortunadamente ni git rm --cached ni git clean -d -fx "" lo hicieron por mí.

Mi solución terminó empujando mi rama a remoto, clonando un nuevo repositorio, luego haciendo mi fusión en el nuevo repositorio. Otras personas que accedían al repositorio tenían que hacer lo mismo.

Moraleja de la historia: use un archivo .gitignore desde el inicio.

 11
Author: Kyle Clegg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-09 05:33:41

Para aquellos que necesitan algo de menor alcance que la respuesta de Scott Schafer ,

git clean -f

Probablemente funcionará. Yoaltamente sugiero correr

git clean --dry-run

Primero. Ese comando generará una lista de archivos que Git eliminará si ejecuta git clean -f, y podría ahorrarle el dolor de eliminar inadvertidamente algo que no quería.

Ver esta respuesta Oveflow Pilao los documentos para más información sobre git clean.

 9
Author: mc_kaiser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-14 19:01:12

Tuve el mismo problema al revisar una rama basada en un commit anterior. Git se negó a pagar debido a archivos no rastreados.

He encontrado una solución y espero que te ayude también.

Agregar los directorios afectados a .gitignore y publicar $ git rm -r --cached en ellos aparentemente no es suficiente.

Supongamos que desea hacer una rama basada en un commit K anterior para probar algunas cosas y volver a la versión actual. Lo haría en el siguiente pasos:

  1. Configurar los archivos sin seguimiento: edite .gitignore y aplique $ git rm -r --cached en los archivos y directorios que desea que git ignore. Agregue también el propio archivo .gitignore a .gitignore y no olvide emitir $ git rm -r --cached .gitignore. Esto asegurará que el comportamiento ignore de git deje el mismo en las confirmaciones anteriores.

  2. Confirme los cambios que acaba de hacer:

    $ git add -A
    $ git commit

  3. Guarde el registro actual, de lo contrario puede tener problemas para volver a la current version

    $ git log > ../git.log

  4. Restablecimiento completo de la confirmación K

    $ git reset --hard version_k

  5. Crear una rama basada en el commit K

    $ git branch commit_k_branch

  6. Checkout en esa rama

    $ git checkout commit_k_branch

  7. Haz tus cosas y envíalas

  8. Realizar el pedido de nuevo en el maestro de nuevo

    $ git checkout master

  9. Restablecer la versión actual de nuevo

    $ git reset current_version o $ git reset ORIG_HEAD

  10. Ahora puede reiniciar duro a la CABEZA

    git reset --hard HEAD

NOTA! No omita el penúltimo paso (como, por ejemplo, $ git reset --hard ORIG_HEAD de lo contrario, los archivos no rastreados que git se quejó anteriormente se perderán.

También me aseguré de que los archivos de los que git se quejaba no se eliminaran. Los copié en un archivo de texto y emití el comando $ for i in $(cat ../test.txt); do ls -ahl $i; done

Si realiza la compra en la rama mencionada anteriormente de nuevo, no olvide emitir $ git status para asegurarse de que no aparecen cambios.

 7
Author: Juri Sinitson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-24 03:55:37

Si desea resolver rápidamente esta pregunta, puede usar este comando:

git checkout -f dev
 7
Author: GeekHades,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-07 02:40:01

Esto me sucedió en un sistema Windows 8, usando Git desde el símbolo del sistema. El resto de mi equipo usa TFS , y yo uso el git-tf de Microsoft para empujar/tirar entre TFS y mi repositorio Git local.

El problema surgió debido a algunos archivos que habían sido renombrados solo para cambiar su caso. Lo que parece haber sucedido fue esto:

  • Los archivos fueron revisados con una carcasa mixta en sus nombres.
  • En una confirmación posterior, el archivo los nombres se cambiaron a todos en minúsculas.
  • git-tf inicialmente obtuvo los archivos en mayúsculas y minúsculas.
  • Cuando los archivos se renombraron a minúsculas, git-tf no obtuvo los archivos porque para Windows 8 esos nombres de archivo son equivalentes.
  • Dado que Git distingue entre mayúsculas y minúsculas, se quejó de que tenía los archivos de mayúsculas y minúsculas que no estaban en el control de código fuente. Pero usando git status, no pude ver ningún cambio, ya que en el símbolo del sistema de Windows esos nombres de archivo son equivalentes.

El más simple la solución para mí fue:

  • git checkout una versión anterior del proyecto, mucho antes de que esos archivos se agregaran.
  • Entonces git checkout la última versión del proyecto, con la carcasa de archivo correcta.
 7
Author: Ryan Lundy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-30 08:02:31

Esto funcionó para mí.

 1. git fetch --all
 2. git reset --hard origin/{branch_name}
 4
Author: Chamara Jayalath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-08 12:54:37

En mi caso, el problema era con los submódulos. master se fusionó con otra rama que añadió un nuevo submódulo al proyecto. La rama que estaba tratando de checkout no lo tenía, es por eso que git se quejaba de los archivos no rastreados y ninguna de las otras soluciones sugeridas funcionó para mí. Obligué a la caja a mi nueva sucursal, y saqué a master.

  • git checkout -f my_branch
  • git pull origin master
  • git submodule update --init
 4
Author: Bruno Pinheiro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-16 21:48:50

También me enfrentaba a un problema similar y probé todas las soluciones publicadas anteriormente, pero no funcionó

El problema fue causado cuando yo renombré mi onMusicUpdateListener.java a OnMusicUpdateListener.java en la rama develop.

Ahora master tenía onMusicUpdateListener.java y develop tenía el mismo archivo que OnMusicUpdateListener.java

Ahora cada vez que cambié a master me dio un error

The following untracked working tree files would be overwritten by checkout

Y luego aborted.

Con el fin de resolver esto, me checked out master subdivisión y luego renombró mi onMusicUpdateListener.java a OnMusicUpdateListener.java, committed it and entonces merged con develop rama.

Luego actualizé mi rama develop por merging en master y ahora todo vuelve a la normalidad y el problema está resuelto.

 3
Author: Sheraz Ahmad Khilji,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-01 06:47:11

Estas dos funciones(git rm --cached, git checkout-f another-branch) no funcionó para mí.

En su Lugar, he quitado el archivo (en eclipse) como lo Git dice que hacer; por Favor, mover o eliminarlos antes de que pueda cambiar ramas.

Y luego lo agrego/confirmo.

Y luego tiré y funcionó!

 3
Author: In-young Choung,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-08 16:46:46

En mi caso git rm --cached no funcionó. Pero lo conseguí con un git rebase

 2
Author: Hillkorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-02 10:40:31

Esto podría ser un problema de permiso,

Cambiar la propiedad,

sudo chown -v -R usr-name:group-name folder-name
 2
Author: Won Jun Bae,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-24 20:10:00

2 archivos con el mismo nombre pero diferente caso podría ser el problema.

Puede eliminar uno de estos archivos o cambiarle el nombre. Ex:

Pdf.html.twig (The GOOD one)

pdf.html.twig (The one I deleted)
 2
Author: Samuel Vicent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-10 12:29:07

Mover archivos, en lugar de eliminar

Una forma de evitar la eliminación de archivos es moverlos en su lugar. Por ejemplo:

cd "`git rev-parse --show-toplevel`"
git checkout 2>&1 | while read f; do [ ! -e "$f" ] || mv "$f" "$f".bak; done
 2
Author: gmatht,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-10 06:16:38

Eso es fácil de resolver, git está diciendo que tienes los mismos archivos en ambas ramas, por lo que tienes que eliminar los archivos específicos de la rama maestra y luego podrás fusionarlos:

Git merge"tu rama"

Espero que funcione para ti, acabo de resolver mi error. mi error fue:

Error: Los siguientes archivos de árbol de trabajo sin seguimiento se sobrescribirían al fusionar: .vs / slnx.sqlite Por favor, muévalos o elimínelos antes de fusionarlos. Abortar

Ahora ¡está funcionando! En mi caso .vs / slnx.sqlite fue generado por visual studio, necesitaba cerrarlo antes de eliminarlo.

 1
Author: jeirueda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-28 18:38:19

En mi caso, estaba viendo este error porque estoy usando un popular CMS de código abierto y el directorio que estaba causando problemas era el directorio de subidas en el que el CMS escribe.

Así que lo que estaba diciendo es que hay archivos que no tienes, pero que no puedes obtener del control de versiones.

Estoy agarrando todos los archivos del sitio en vivo a mi local, luego voy a comprobar esto en el repositorio con la esperanza de que esto solucione el problema.

 0
Author: Markosaurus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-31 11:12:09

Delete .gitignore archivo de appname/gen/ para resolver este problema.

 0
Author: vishnuc156,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-19 09:32:02

Si ha renombrado un archivo localmente y luego hace un pull, mostrará ese mensaje de error.

 0
Author: lyuboslav kanev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-23 08:50:37

Simplemente fui al sistema de archivos y eliminé el archivo directamente, luego continué con git checkout y funcionó.

He tenido el problema se producen varias veces y puede estar relacionado con los desarrolladores de hacer delete, push, re-add, push o algo así.

 0
Author: Phil Carter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-13 21:27:22

La mayoría de las respuestas consideran eliminar o eliminar los archivos, que es la manera fácil. Pero a veces no quieres deshacerte de los archivos locales. Pero combínalo con una estrategia, por lo que git también tiene una solución para esto ;

git merge --strategy=ours master 
 0
Author: Erdinç Çorbacı,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-02 14:50:05

Simplemente elimine los archivos o cámbielos de nombre.

Por ejemplo

$ git pull
Enter passphrase for key '/c/Users/PC983/.ssh/id_rsa':
error: Your local changes to the following files would be overwritten by merge:
        ajax/productPrice.php
Please commit your changes or stash them before you merge.
error: The following untracked working tree files would be overwritten by merge:
        ajax/product.php
Please move or remove them before you merge.
Aborting
Updating a04cbe7a..6aa8ead5

Tuve que cambiar el nombre/eliminar ajax/producto.php y ajax/produtPrice.php .

No te preocupes, git pull los traerá de vuelta. Le sugiero que cambie el nombre en lugar de eliminarlos, porque podría perder algunos cambios.

Si esto no ayuda, entonces usted tiene que eliminar toda la rama y crearla de nuevo y luego hacer git pull origin remotebranch

 0
Author: Black,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-29 13:23:55