usar una toda repositorio podemos omitir ignorar gitkeep cómo crear contenido como comando carpetas carpeta git scripting file

una - git: encuentra todos los repositorios locales no comprometidos en un árbol de directorios



ignorar toda una carpeta git (8)

¿Algo a lo largo de estas líneas?

$ for i in /data/*/; do (cd $i && (echo $i; git status)); done $ for i in /data/*/; do (cd $i / > && (git status | grep -qx ''nothing to commit (working directory clean)'' / > || (echo $i && git status))); done

Tengo un grupo (10-15) de repositorios locales de git en algún lugar de mi sistema de archivos, pero todos en la carpeta / data /

Quiero encontrar todas / cualquier carpeta que tenga cambios no confirmados. ¿Cómo puedo hacer eso? Algo así como una variante de git status global recursiva.

Todas las respuestas se equivocaron, creo. Cualquier comando git solo funciona dentro de la carpeta que está bajo el control de git. Necesito algo para buscar esas carpetas.

Así que en vez escribí este script que hace esto:

#!/usr/bin/env ruby require ''find'' require ''fileutils'' #supply directory to search in as argument @pat = ARGV[0] (puts "directory argument required"; exit) unless @pat Dir.chdir(@pat) Find.find(@pat) do |path| if FileTest.directory?(path) Dir.chdir(path) resp = `git status 2>&1` unless resp =~ /fatal|nothing to commit /(working directory clean/)/i puts "#{''#''*10}/n#{Dir.pwd}#{''#''*10}/n#{resp}" Find.prune end Dir.chdir(@pat) end end



El comando de find es tu amigo, junto con un poco de magia de concha.

find . -type d -name ''.git'' | while read dir ; do sh -c "cd $dir/../ && echo -e /"/nGIT STATUS IN ${dir///.git/}/" && git status -s" ; done

de: https://gist.github.com/tafkey/664266c00387c98631b3


No creo que git tenga esta versión incorporada, así que (también) creé un script para hacer esto: https://github.com/mnagel/clustergit

El problema con los fragmentos de código publicados aquí es que se rompen a medida que cambia el formato de salida del git status de git status . Mi script tiene el mismo problema (ya que básicamente funciona de la misma manera), pero al menos siempre obtienes la última versión.


No es muy elegante para el formateo, pero ¿qué tal algo como

find . -iname ".git" -type d | sed -rne "s|(.+)//.git|echo /1;cd /1;git status;cd /data|p" | bash


Puede usar " git ls-files --modified --deleted --exclude-standard" para enumerar todos los archivos modificados y eliminados ( --exclude-standard probablemente no sea necesario allí, pero en caso de que quiera enumerar todos los archivos desconocidos que no se ignoran con --other ...). A continuación, puede comprobar si la salida de este comando está vacía.

O puede verificar el estado de salida de " git diff --quiet HEAD" si desea verificar si "git commit -a" se recupera de algo, o "git diff --cached --quiet HEAD" si desea verificar si "git commit" escogiera algo (o uno de sus parientes de plomería: git-diff-files o git-diff-index ).


También hay un script de shell llamado multi-git-status que hace esto.

Simplemente use el comando mgitstatus (con un argumento de nombre de directorio opcional):


for rp in /srv/*/ do printf ''/ec'' cd "$rp" git status echo "${rp%/}" read done

Example