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 :
--globalPara las opciones de escritura: escriba en el archivo global
~/.gitconfiglugar del repositorio.git/config, escriba en el$XDG_CONFIG_HOME/git/configsi este archivo existe y el archivo~/.gitconfigno lo hace.
--localPara opciones de escritura: escriba en el archivo
.git/configdel repositorio. Este es el comportamiento predeterminado.
fetch.pruneSi es verdadero, fetch se comportará automáticamente como si la opción
--prunese diera en la línea de comando. Ver tambiénremote.<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>.pruneCuando 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
--prunese diera en la línea de comando).fetch.pruneconfiguración defetch.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.
"
git fetch" (de ahí "git pull" también) aprendió a verificar las variables de configuración "fetch.prune" y "remote.*.prunefetch.prune" y comportarse como si se--prunedado 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-]prunede la línea de comando anulará el valor predeterminado configurado.Desde
--prunees 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.