remote last from all git

last - Poda automática con git fetch o pull



git pull--rebase (3)

Si alguien borró una rama remota porque el trabajo se terminó y no sé, no haré una git fetch --prune y eventualmente haré retroceder la rama eliminada.

¿Existe una solución viable para forzar a git a utilizar el modo de transferencia cuando se busca / tira sin tener que especificarlo todo el tiempo?


git config --global fetch.prune true

Para siempre, --prune git fetch y git pull en todos tus repositorios de Git:

git config --global fetch.prune true

Este comando anterior se agrega en su configuración global de Git (generalmente ~/.gitconfig ) las siguientes líneas. Use git config -e --global para ver su configuración global.

[fetch] prune = true

git config remote.origin.prune true

Para siempre - --prune pero desde un único repositorio:

git config remote.origin.prune true #^^^^^^ #replace with your repo name

Este comando anterior agrega en su configuración local de Git (típicamente .git/config ) la última línea de abajo. Use git config -e para ver su configuración local.

[remote "origin"] url = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fetch = +refs/heads/*:refs/remotes/origin/* prune = true

También puede usar --global dentro del segundo comando o usar en su lugar --local dentro del primer comando.

git config --global gui.pruneDuringFetch true

Si usas git gui , también te puede interesar:

git config --global gui.pruneDuringFetch true

que anexa:

[gui] pruneDuringFetch = true

Referencias

Las documentaciones correspondientes de la git help config :

--global

Para las opciones de escritura: escriba en el archivo global ~/.gitconfig lugar del repositorio .git/config , escriba en el $XDG_CONFIG_HOME/git/config si este archivo existe y el archivo ~/.gitconfig no lo hace.

--local

Para opciones de escritura: escriba en el archivo .git/config del repositorio. Este es el comportamiento predeterminado.

fetch.prune

Si es verdadero, fetch se comportará automáticamente como si la opción --prune se diera en la línea de comando. Ver también remote.<name>.prune .

gui.pruneDuringFetch

"verdadero" si git-gui debe eliminar las ramas de seguimiento remoto al realizar una búsqueda. El valor predeterminado es "falso".

remote.<name>.prune

Cuando se establece en verdadero, la recuperación desde este control remoto de forma predeterminada también eliminará cualquier referencia de seguimiento remoto que ya no exista en el control remoto (como si la opción --prune se diera en la línea de comando). fetch.prune configuración de fetch.prune , si hay alguna.


Si desea siempre prune cuando fetch , puedo sugerir el uso de Aliases .

Simplemente escriba git config -e para abrir su editor y cambiar la configuración de un proyecto específico y agregar una sección como

[alias] pfetch = fetch --prune

cuando git pfetch con git pfetch la ciruela se hará automáticamente.


Desde git 1.8.5 (Q4 2013) :

" git fetch " (de ahí " git pull " también) aprendió a verificar las variables de configuración " fetch.prune " y " remote.*.prune fetch.prune " y comportarse como si se --prune dado la opción de línea de comando " --prune ".

Eso significa que, si configura remote.origin.prune como verdadero:

git config remote.origin.prune true

Cualquier git fetch o git pull automáticamente.

Nota: Git 2.12 (Q1 2017) solucionará un error relacionado con esta configuración, lo que haría que git remote rename porte mal.
Consulte " ¿Cómo cambio el nombre de un control remoto git? ".

Ver más en commit 737c5a9 :

Sin " git fetch --prune ", las ramas de seguimiento remoto para una rama que el otro lado ya ha eliminado se mantendrá para siempre.
Algunas personas siempre quieren ejecutar " git fetch --prune ".

Para dar cabida a los usuarios que quieran podar siempre o al ir a buscar desde un control remoto en particular, agregue dos nuevas variables de configuración " fetch.prune " y " remote.<name>.prune ":

  • " fetch.prune " permite habilitar prune para todas las operaciones de búsqueda.
  • " remote.<name>.prune " permite cambiar el comportamiento por control remoto.

Este último anulará naturalmente el anterior, y la opción --[no-]prune de la línea de comando anulará el valor predeterminado configurado.

Desde --prune es una operación potencialmente destructiva (Git no mantiene los reflogs para las referencias eliminadas), no queremos podar sin el consentimiento de los usuarios, por lo que esta configuración no estará activada por defecto.