rastreados - Cómo decirle a git que ignore líneas individuales, es decir, gitignore para líneas específicas de código
gitignore java (2)
Así es como puedes hacerlo con los filtros de git :
- Crear / Abrir archivo de gitattributes:
- <project root> /. gitattributes (se confirmará en repositorio)
O - <project root> /. git / info / attributes (no se comprometerá con el repositorio)
- <project root> /. gitattributes (se confirmará en repositorio)
- Agregue una línea que defina los archivos a filtrar:
-
*.rb filter=gitignore
, es decir, filtro de ejecución llamadogitignore
en todos los archivos*.rb
-
- Defina el filtro
gitignore
en sugitconfig
:-
$ git config --global filter.gitignore.clean "sed ''/#gitignore$/''d"
, es decir, eliminar estas líneas -
$ git config --global filter.gitignore.smudge cat
, es decir, no hacer nada al extraer el archivo del repositorio
-
Notas:
Por supuesto, esto es para archivos ruby, aplicados cuando una línea termina con #gitignore
, aplicado globalmente en ~/.gitconfig
. Modifique esto como lo necesite para sus propósitos.
¡¡Advertencia!!
Esto deja su archivo de trabajo diferente del repositorio (por supuesto). ¡Cualquier revisión o actualización significará que estas líneas se perderán! Este truco puede parecer inútil, ya que estas líneas se pierden repetidamente al momento del check out, rebase o pull, pero tengo un caso de uso específico para poder usarlo.
Solo git stash save "proj1-debug"
mientras el filtro está inactivo (solo deshabilítelo temporalmente en gitconfig
o algo así). De esta forma, mi código de depuración siempre se puede git stash apply
en mi código en cualquier momento sin temor a que alguna vez estas líneas sean accidentalmente comprometidas.
Tengo una idea posible para resolver estos problemas, pero intentaré implementarla en otro momento.
Gracias a Rudi y jw013 por mencionar filtros y gittributes git.
Esta pregunta ya tiene una respuesta aquí:
- ¿Puede ignorar una línea específica? 8 respuestas
.gitignore
puede ignorar archivos completos, pero ¿hay alguna manera de ignorar líneas específicas de código mientras se codifica?
Con frecuencia y repetidamente agrego las mismas líneas de depuración en un proyecto, solo para tener que recordar eliminarlas antes de comprometerme. Me gustaría simplemente mantener las líneas en el código y hacer que las ignoren.
Tuve un problema similar al escribir el código de Java. Mi solución fue marcar código que no quería confirmar y luego agregar un enlace precompromiso que buscaría mi marcado:
#!/bin/bash
#
# This hook will look for code comments marked ''//no-commit''
# - case-insensitive
# - dash is optional
# - there may be a space after the //
#
noCommitCount=$(git diff --no-ext-diff --cached | egrep -i --count "(@No|/////s?no[ -]?)commit")
if [ "$noCommitCount" -ne "0" ]; then
echo "WARNING: You are attempting to commit changes which include a ''no-commit''."
echo "Please check the following files:"
git diff --no-ext-diff --cached --name-only -i -G"(@no|////s?no-?)commit" | sed ''s/^/ - /''
echo
echo "You can ignore this warning by running the commit command with ''--no-verify''"
exit 1
fi