tutorial - git squash all commits
Eliminar refs/original/heads/master de git repo after filter-branch--tree-filter? (2)
Y si estás en Windows PowerShell:
git for-each-ref --format="%(refname)" refs/original/ | foreach-object -process { git update-ref -d $_ }
Tenía la misma pregunta que aquí: Nuevo repositorio git en el directorio raíz para subsumir un repositorio existente en un subdirectorio
Seguí esta respuesta aquí: Nuevo repositorio de git en el directorio raíz para subsumir un repositorio existente en un subdirectorio
Ahora, gitk --all
muestra dos historias: una que culmina en el master
actual, y una llamada original/refs/heads/master
.
No sé qué es esta segunda historia ni cómo eliminarla del repositorio. No necesito dos historias en mi repositorio.
¿Como me deshago de esto?
Para reproducirse usted mismo:
mkdir -p project-root/path/to/module
cd project-root/path/to/module
mkdir dir1 dir2 dir3
for dir in * ; do touch $dir/source-file-$dir.py ; done
git init
git add .
git commit -m ''Initial commit''
Ahora tenemos el problema del cartel original. Vamos a mover la raíz del repositorio de git a la raíz del proyecto usando la respuesta vinculada anteriormente:
git filter-branch --tree-filter ''mkdir -p path/to/module ; git mv dir1 dir2 dir3 path/to/module'' HEAD
rm -rf path
cd ../../../ # Now PWD is project-root
mv path/to/module/.git .
git reset --hard
Ahora, mira mi problema actual:
gitk --all &
git show-ref
¿Cómo me deshago de refs/original/heads/master
y todo el historial asociado?
refs/original/*
está allí como una copia de seguridad, en caso de que desordene su filtrar-rama. Créeme, es una muy buena idea.
Una vez que haya inspeccionado los resultados y esté seguro de que tiene lo que desea, puede eliminar la referencia respaldada:
git update-ref -d refs/original/refs/heads/master
o si le hiciste esto a muchos árbitros, y quieres borrarlo del todo:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
(Esto se toma directamente de la página de manual de la rama de filtro).
Esto no se aplica a usted, sino a otros que pueden encontrar esto: si usted hace una sucursal de filtro que elimina el contenido que git reflog expire --expire=now --all
un espacio de disco significativo, es posible que también desee ejecutar git reflog expire --expire=now --all
y git gc --prune=now
para caducar los reflogs y eliminar los objetos que no se usaron. (Advertencia: completamente, totalmente irreversible. Esté muy seguro antes de hacerlo).