Tengo un proyecto Visual Studio existente en mi repositorio. Recientemente agregué un archivo .gitignore en mi proyecto y supongo que eso le dice a Git que ignore los archivos enumerados en el archivo.
Mi problema es que todos esos archivos ya están siendo rastreados y, hasta donde yo sé, Git no ignorará un archivo que ya fue rastreado antes de agregar una regla a este archivo para ignorarlo.
Se sugirió usar: git rm --cached
y des-rastrearlos manualmente, pero eso me llevará una eternidad revisarlos uno por uno.
Pensé en eliminar el repositorio y volver a crearlo nuevamente, pero esta vez con el archivo .gitignore presente, pero debe haber una mejor manera de hacerlo.
git rm --cached
usar directorios completos con la-r
opción, si eso es útilRespuestas:
Esta respuesta resolvió mi problema:
En primer lugar, confirme todos los cambios pendientes.
Luego ejecute este comando:
Esto elimina todo del índice, luego solo ejecuta:
Compromételo:
fuente
git push origin
también un para reflejar los cambios en el repositorio remoto..gitignore is now working
mensaje. :)Cree un archivo .gitignore, por lo que para hacerlo, simplemente cree cualquier archivo .txt en blanco.
Luego debe cambiar su nombre escribiendo la siguiente línea en el cmd (donde
git.txt
está el nombre del archivo que acaba de crear):rename git.txt .gitignore
Luego puede abrir el archivo y escribir todos los archivos sin seguimiento que desea ignorar para siempre. Por ejemplo, el mío se ve así:
`` `
Hay una colección completa de archivos .gitignore útiles de GitHub
Una vez que tenga esto, debe agregarlo a su repositorio git como cualquier otro archivo, solo que debe estar en la raíz del repositorio.
Luego, en su terminal, debe escribir la siguiente línea:
git config --global core.excludesfile ~ / .gitignore_global
Desde el documento oficial:
Si el repositorio ya existe, debe ejecutar estos comandos:
Si el paso 2 no funciona, debe escribir la ruta del agujero de los archivos que desea agregar.
fuente
Como se especifica aquí Puede actualizar el índice:
Al hacer esto, los archivos no aparecerán en
git status
ogit diff
.Para comenzar a rastrear los archivos nuevamente, puede ejecutar:
fuente
Si agregaste tu
.gitignore
demasiado tarde, git continuará rastreando los archivos ya confirmados independientemente. Para solucionar esto, siempre puede eliminar todas las instancias almacenadas en caché de los archivos no deseados.Primero, para verificar qué archivos está rastreando realmente, puede ejecutar:
git ls-tree --name-only --full-tree -r HEAD
Digamos que encontró archivos no deseados en un directorio como este
cache/
, es más seguro dirigirse a ese directorio en lugar de a todos sus archivos.Entonces en lugar de:
git rm -r --cached .
Es más seguro apuntar al archivo o directorio no deseado:
git rm -r --cached cache/
Luego proceda a agregar todos los cambios,
git add .
y comprometerse ...
git commit -m ".gitignore is now working"
Referencia: https://amyetheredge.com/code/13.html
fuente
Aquí hay una manera de "destrabar" cualquier archivo que de otro modo se ignoraría bajo el conjunto actual de patrones de exclusión:
Esto deja los archivos en su directorio de trabajo pero los elimina del índice.
El truco utilizado aquí es proporcionar un archivo de índice inexistente para git ls-files para que piense que no hay archivos rastreados. El código de shell anterior solicita todos los archivos que se ignorarían si el índice estuviera vacío y luego los elimina del índice real con git rm.
Después de que los archivos hayan sido "no rastreados", use el estado de git para verificar que no se eliminó nada importante (si es así, ajuste sus patrones de exclusión y use git reset - path para restaurar la entrada de índice eliminada). Luego, haga una nueva confirmación que omita el "error".
La "crisis" todavía estará en cualquier compromiso viejo. Puede usar git filter-branch para producir versiones limpias de los commits antiguos si realmente necesita un historial limpio (nb usando git filter-branch "reescribirá el historial", por lo que no debe realizarse a la ligera si tiene algún colaborador que haya retirado cualquiera de sus confirmaciones históricas después de que se introdujo por primera vez la "crisis".
fuente
Eliminar archivos del área de preparación
Agregar todos los cambios
Compromételo:
fuente
Creo que esta es una manera fácil de agregar un archivo .gitignore a un repositorio existente.
Prerrequisito :
Necesita un navegador para acceder a su cuenta de github.
Pasos
¡Que te diviertas!
fuente
Utilice
git clean
Obtener ayuda en esta ejecución
Si desea ver qué sucedería primero, asegúrese de pasar el interruptor -n para una ejecución en seco:
Para eliminar la basura gitingnored
Cuidado: puede estar ignorando archivos de configuración locales como database.yml que también se eliminarían. Úselo bajo su propio riesgo.
Luego
fuente