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é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>.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 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.*.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.