¿Cómo descartar confirmaciones locales en Git?
Había estado trabajando en algo, y decidí que estaba completamente jodido...después de haber cometido algo. Así que probé la siguiente secuencia:
git reset --hard
git rebase origin
git fetch
git pull
git checkout
En cuyo momento recibí el mensaje
Your branch is ahead of 'origin/master' by 2 commits.
Quiero descartar mis confirmaciones locales, sin tener que borrar mi directorio local y volver a descargar todo. ¿Cómo puedo lograr eso?
6 answers
git reset --hard origin/master
Eliminará todas las confirmaciones que no estén en origin/master
donde origin
es el nombre del repositorio y master
es el nombre de la rama.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-03 11:15:45
Como un aparte, aparte de la respuesta de mipadi (que debe funcionar por cierto), usted debe saber que haciendo:
git branch -D master
git checkout master
También hace exactamente lo que quiere sin having to redownload everything
(su cita parafraseada). Esto se debe a que su repositorio local contiene una copia del repositorio remoto (y esa copia no es la misma que su directorio local, ni siquiera es la misma que su rama comprobada).
Eliminar una rama es perfectamente seguro y reconstruir esa rama es muy rápido y no implica ninguna red trafico. Recuerde, git es principalmente un repositorio local por diseño. Incluso las ramas remotas tienen una copia en el local. Solo hay un poco de metadatos que le dicen a git que una copia local específica es en realidad una rama remota. En git, todos los archivos están en tu disco duro todo el tiempo.
Si no tienes más ramas que master, debes:
git checkout -b 'temp'
git branch -D master
git checkout master
git branch -D temp
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-30 13:43:13
Lo que hago es tratar de reiniciar difícil de CABEZA. Esto borrará todas las confirmaciones locales:
git reset --hard HEAD^
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-12 09:54:56
Necesitas ejecutar
git fetch
Para obtener todos los cambios y luego no recibirá el mensaje con "su rama está por delante".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-30 02:39:10
He visto casos en los que el control remoto quedó fuera de sincronización y necesitaba ser actualizado. Si un reset --hard
o branch -D
no funciona, intente
git pull origin
git reset --hard
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-04 17:13:33
Tuve que hacer un:
git checkout -b master
Como git dijo que no existe, porque ha sido borrado con el
git -D master
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-05 12:00:51