reset - sobrescritos - Cómo descartar cambios usando repo
revertir git checkout (6)
repo status
me muestra muchos cambios no deseados.
Se duplicaría si ingresara a cada proyecto y utilizara git reset --hard
.
¿Hay una manera de restablecer todos los cambios usando repo, algo así como repo reset --hard
?
Este es el comando que uso para este tipo de cosas, muy útil.
repo forall -vc "git reset --hard"
¿Qué significa todo aquí?
El repo forall
se ejecutará para todos los repos.
La - v
es detallada, por lo que imprimirá la salida del comando
-c "COMMAND TO EXECUTE"
es el comando real que desea
Puede usar el comando repo
como lo siguiente para revertir todos sus cambios:
repo sync -d
Esto revertirá todos los cambios a la revisión original.
Editado:
El comando anterior está trabajando solo con la versión en ese momento.
El comando de trabajo es:
repo forall -vc "git reset --hard"
El comando y la descripción de las opciones.
- para todos
Ejecuta el comando de shell dado en cada proyecto.
Opciones (que se pueden usar con el comando forall
)
-c
: comando y argumentos a ejecutar. El comando se evalúa a través de / bin / sh y cualquier argumento después de pasarlo como parámetros posicionales de shell.
-p
: muestra los encabezados del proyecto antes de la salida del comando especificado. Esto se logra vinculando las tuberías a las secuencias estándar, estándar y sterr del comando, y canalizando toda la salida a una secuencia continua que se muestra en una sesión de buscapersonas.
-v
: muestra los mensajes que el comando escribe en stderr.
Para obtener más información, consulte el documento de repo
Según la documentation el script de repo
solo admite:
- en eso
- sincronizar
- comienzo
- estado
- subir
Si los cambios no deseados ya están cargados en el repositorio y quiere que el repositorio vuelva a una revisión anterior, puede usar git reset .
Si desea deshacer los cambios realizados en el lado del cliente que aún no se han cargado en el repositorio, puede revertir git .
Si hay una necesidad de revertir la carpeta de trabajo al estado limpio en el que no tiene modificaciones locales y no hay archivos sin seguimiento (es decir, donde el estado de repo no muestra nada), encontré que estos dos enfoques son útiles para la sincronización de la recompra y los archivos eliminados / modificados
repo forall -c ''git reset --hard ; git clean -fdx''
o
rm -rf * ; repo sync -l
// note that .repo is preserved after that
Tenga en cuenta que esto no es equivalente a inicializar un nuevo repositorio local y sincronizar (por ejemplo, se conserva el alijo)
Si no está seguro de lo que está sucediendo, lea la sincronización del repositorio completo y los archivos eliminados / modificados.
Utilizo el comando repo forall con la siguiente sintaxis y me ayuda a restablecer los archivos de seguimiento.
repo forall -p -c ''git checkout -f foo''
donde foo
debe ser reemplazado con un nombre de rama legítimo.
#!/bin/bash
for gitdir in $(find . -name .git); do
pushd $(dirname $gitdir)
git reset --hard
popd
done