Tengo un problema extraño que no puedo resolver. Esto es lo que sucedió:Error de Git: no se puede agregar a .git/logs/refs/remotes/origin/master: Permiso denegado
Tenía algunos archivos de registro en un repositorio de Github que no quería allí. He encontrado este script que elimina completamente los archivos de la historia de Git, así:
#!/bin/bash
set -o errexit
# Author: David Underhill
# Script to permanently delete files/folders from your git repository. To use
# it, cd to your repository's root and then run the script with a list of paths
# you want to delete, e.g., git-delete-history path1 path2
if [ $# -eq 0 ]; then
exit 0are still
fi
# make sure we're at the root of git repo
if [ ! -d .git ]; then
echo "Error: must run this script from the root of a git repository"
exit 1
fi
# remove all paths passed as arguments from the history of the repo
[email protected]
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $files" HEAD
# remove the temporary history git-filter-branch otherwise leaves behind for a long time
rm -rf .git/refs/original/ && git reflog expire --all && git gc --aggressive --prune
Yo, por supuesto, hizo una primera copia de seguridad y luego lo intentó. Parecía funcionar bien. Entonces hice un git push -f y nos recibieron con los siguientes mensajes:
error: Unable to append to .git/logs/refs/remotes/origin/master: Permission denied
error: Cannot update the ref 'refs/remotes/origin/master'.
todo parece haber empujado muy bien sin embargo, debido a que los archivos parecen haber desaparecido desde el repositorio GitHub, si lo intento y empujar otra vez conseguir lo mismo:
error: Unable to append to .git/logs/refs/remotes/origin/master: Permission denied
error: Cannot update the ref 'refs/remotes/origin/master'.
Everything up-to-date
EDITAR
$ sudo chgrp {user} .git/logs/refs/remotes/origin/master
$ sudo chown {user} .git/logs/refs/remotes/origin/master
$ git push
Everything up-to-date
Gracias!
EDITAR
Uh oh. Problema. He estado trabajando en este proyecto durante toda la noche y fui a cometer mis cambios:
error: Unable to append to .git/logs/refs/heads/master: Permission denied
fatal: cannot update HEAD ref
Así que:
sudo chown {user} .git/logs/refs/heads/master
sudo chgrp {user} .git/logs/refs/heads/master
trato al comprometerse de nuevo y me sale:
error: Unable to append to .git/logs/HEAD: Permission denied
fatal: cannot update HEAD ref
Entonces yo:
sudo chown {user} .git/logs/HEAD
sudo chgrp {user} .git/logs/HEAD
Y luego Intento el commit nuevamente:
16 files changed, 499 insertions(+), 284 deletions(-)
create mode 100644 logs/DBerrors.xsl
delete mode 100644 logs/emptyPHPerrors.php
create mode 100644 logs/trimXMLerrors.php
rewrite public/codeCore/Classes/php/DatabaseConnection.php (77%)
create mode 100644 public/codeSite/php/init.php
$ git push
Counting objects: 49, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (27/27), done.
Writing objects: 100% (27/27), 7.72 KiB, done.
Total 27 (delta 15), reused 0 (delta 0)
To [email protected]:IAmCorbin/MooKit.git
59da24e..68b6397 master -> master
Hooray. Salto en http://GitHub.com y reviso el repositorio, y mi último compromiso no está donde se encuentra. :: scratch head :: Así que presiono de nuevo:
Everything up-to-date
Umm ... no se ve así. Nunca he tenido este problema antes, ¿podría ser un problema con github? ¿O estropeé algo con mi proyecto de git?
EDITAR
No importa, lo hice un simple:
git push origin master
y empujó bien.
Ese comando funcionó para mí. Lo ejecuté desde la raíz del clon. Gracias @CharlesDuffy! – ariestav
@ Mr.Stranger, solo si tiene un valor y nombre de usuario de IFS correctos (pueden aparecer nombres de usuario con espacios, por ejemplo en cygwin). Más seguro para citar: 'sudo chown -R" $ USER ".', y no asumir cordura. :) –
@ Mr.Stranger, ... también, 'USER' no está garantizado por http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_05_03, por lo que podría ser más seguro usar '" $ (id -un) "'. –