usar - El archivo.gitignore en Sourcetree no funciona
omitir una carpeta en git (7)
Estoy trabajando en un proyecto maven y quiero ignorar los archivos generados y almacenados en la carpeta / target de la carpeta raíz de mi proyecto (evaluación). En la raíz de mi repositorio git tengo un archivo .gitignore con las siguientes entradas (backend) es solo una carpeta que contiene la evaluación del proyecto Eclipse)
backend/Evaluation/logs/
backend/Evaluation/target/
Por alguna razón, SourceTree no ignora los archivos almacenados en estas dos carpetas y cuando compilo mi proyecto hay algunos cambios no comprometidos que son algunos archivos .class dentro de la carpeta / target.
Por qué está pasando esto ? También traté de cambiar las entradas de .gitignore a
/ backend / Evaluation / logs / **
pero tampoco funcionó.
Algunas ideas ?
Además de las respuestas ya proporcionadas anteriormente, también tenga en cuenta que el archivo .gitignore
no funcionará si no está en la carpeta raíz.
Tenía un proyecto en el que .gitignore
estaba aquí / /projectname/.gitignore
proyecto .gitignore
/projectname/.gitignore
y, por lo tanto, no se leía. Así que lo /.gitignore
a /.gitignore
y todo estaba bien nuevamente.
Debido a que existe la etiqueta Sourcetree en la pregunta, le responderé cómo hacer esto con Sourcetree , es realmente simple.
Como se dijo antes, primero tiene que eliminar el archivo del seguimiento y luego hacer Sourcetree para ignorar el archivo.
- Cambie algo en el archivo para que se lo muestre o selecciónelo desde la pestaña "estado del archivo" en la parte inferior del repositorio abierto.
- Haga clic derecho en el archivo y verá "Ignorar ...", pero está atenuado porque, como se dijo anteriormente, ya está en seguimiento.
- Haga clic con el botón derecho en el archivo y elija "Detener rastreo"
- El archivo se mostrará con un botón rojo que indica que se eliminará (del seguimiento)
- Se mostrará una nueva entrada del mismo archivo en "estado del archivo" con un signo de interrogación azul que indica un archivo nuevo (nuevo porque dijiste eliminar del seguimiento en 4)
- Haga clic derecho en el archivo de 5 y ahora verá que "Ignorar ..." puede elegir. Haga clic en él y Sourcetree colocará una nueva entrada para el archivo en el archivo .gitignore
- Puede ver el archivo .gitignore si hace clic en "Configuración" en la esquina superior derecha, elige "avanzado" y luego la primera entrada trata del archivo de ignorar, haga clic en "editar" y se abrirá.
Descubrí que al eliminar el repositorio, al tener el archivo .gitignore en la carpeta cuando se recrea el repositorio, se respeta el archivo de ignorar.
Digamos que tenemos un archivo que se agregó inadvertidamente a nuestro repositorio:
$ echo this file is important > junkfile
$ git add junkfile
$ git ci -m ''added a file''
En algún momento, nos damos cuenta de que el archivo no es importante, así que lo agregamos a nuestro archivo .gitignore
:
$ echo junkfile >> .gitignore
$ git ci -m ''ignore junkfile'' .gitignore
Más tarde, hacemos algunos cambios en ese archivo:
$ sed -i ''s/ is / is not/'' junkfile
Y, por supuesto, aunque el archivo está en la lista de .gitignore
, ya le hemos dicho a git que queremos seguirlo, así que el git status
muestra:
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: junkfile
#
no changes added to commit (use "git add" and/or "git commit -a")
Necesitamos eliminar este archivo del repositorio (sin eliminar el archivo de nuestro árbol de trabajo). Podemos hacer esto con la bandera --cached
a git rm
:
$ git rm --cached junkfile
rm ''junkfile''
Esto etapas la operación de delete
...
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: junkfile
#
... así que tenemos que comprometerlo:
$ git commit -m ''removed junkfile from repository''
[master 19f082a] removed junkfile from repository
1 file changed, 1 deletion(-)
delete mode 100644 junkfile
Ahora si ejecutamos el git status
git, git ignorará este archivo:
$ git status
# On branch master
nothing to commit, working directory clean
Aunque todavía está aquí en nuestro árbol de trabajo:
$ cat junkfile
this file is not important
Esto funcionó para mí:
git update-index --assume-unchanged some.file
Si los archivos ya se han agregado o comprometido a su repositorio de Git, primero debe detener el rastreo antes de que sean ignorados por .gitIgnore .
Para detener el seguimiento de archivos en SourceTree:
Haga clic derecho en los archivos. Elija "Detener seguimiento".
( Esto no eliminará sus archivos, simplemente deja de seguirlos )
Para detener el seguimiento de archivos desde la línea de comandos:
git rm --cached example.txt
Tuve un problema con la carpeta bin que se estaba rastreando (toda la carpeta).
Estos son los pasos rápidos (más visuales, ya que soy más un tipo visual de persona):
- Solo por razones de seguridad, comprimí toda la carpeta de la papelera
- Moverlo al escritorio
- Mueva (actual) .gitignore al escritorio también
- Eliminar toda la carpeta BIN
- Cambios de compromiso (a través de la herramienta favorita de commit git)
- ¡Comprometerse, empujar, hacer!
- Volver a la carpeta del proyecto básico
- Retrocede el archivo .gitignore
- Opcional: mueva hacia atrás (descomprima) la carpeta bin también.
- Como resultado, verá que la herramienta git ya no rastrea los cambios de la carpeta bin.
Espero que esto ayude a alguien.