La forma más obvia sería la de añadir estos a src/.gitignore
:
obj/
bin/
Esto pasa por alto los caminos que se encuentran en una la llamada al directorio obj
, o un directorio llamado bin
desde el directorio src hacia abajo.
Algo así como src/*/obj/
en un nivel superior .gitignore
podría no funcionar si tiene una jerarquía de proyectos irregular con algunos obj
y bin
directorios Más adelante, bajando el árbol.
Aquí está shell script prueba rápida que muestra la regla de ignorar en acción:
#!/bin/sh
mkdir src
mkdir tools
mkdir src/project1
mkdir src/project2
mkdir tools/tool1
mkdir src/project1/bin
mkdir src/project1/obj
mkdir src/project2/bin
mkdir src/project2/obj
mkdir tools/tool1/bin
touch testfile
touch src/testfile
touch tools/testfile
touch src/project1/testfile
touch src/project2/testfile
touch tools/tool1/testfile
touch src/project1/bin/testfile
touch src/project1/obj/testfile
touch src/project2/bin/testfile
touch src/project2/obj/testfile
touch tools/tool1/bin/testfile
git init
add_empty() { touch "$1" && git add "$1"; }
add_empty dummy
add_empty src/dummy
add_empty tools/dummy
add_empty src/project1/dummy
add_empty src/project2/dummy
add_empty tools/tool1/dummy
git status
printf 'obj/\nbin/\n' >src/.gitignore && git add src/.gitignore
git status
La sección de archivos sin seguimiento del primer estado es:
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# src/project1/bin/
# src/project1/obj/
# src/project1/testfile
# src/project2/bin/
# src/project2/obj/
# src/project2/testfile
# src/testfile
# testfile
# tools/testfile
# tools/tool1/bin/
# tools/tool1/testfile
y después de agregar el archivo .gitignore:
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# src/project1/testfile
# src/project2/testfile
# src/testfile
# testfile
# tools/testfile
# tools/tool1/bin/
# tools/tool1/testfile
Como prueba para demostrar que git no está ignorando los archivos llamados.210 y bin
pero es ignorar obj
y bin
directorios más abajo en la jerarquía después de ejecutar este script:
#!/bin/sh
mkdir src/project3
touch src/project3/testfile && git add src/project3/testfile
touch src/project3/obj
touch src/project3/bin
mkdir src/subdir
mkdir src/subdir/proj
touch src/subdir/proj/testfile && git add src/subdir/proj/testfile
mkdir src/subdir/proj/obj
mkdir src/subdir/proj/bin
touch src/subdir/proj/obj/testfile
touch src/subdir/proj/bin/testfile
Los nuevos archivos sin seguimiento son:
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# src/project1/testfile
# src/project2/testfile
# src/project3/bin
# src/project3/obj
# src/testfile
# testfile
# tools/testfile
# tools/tool1/bin/
# tools/tool1/testfile
Simplemente funciona ... Gracias :) –
No funciona para mí con '1.7.0.2.msysgit.0'. Publiqué una respuesta que funciona para mí. –
@Drew: Su respuesta parece más útil ya que coincide con todos los directorios con menos problemas, así que lo voté. Dicho esto, no sé por qué esta respuesta no funcionaría para usted ya que estoy usando esta técnica actualmente sin problema. Tal vez su versión de git es vieja? –