Por lo tanto, me parece que las operaciones más básicas de Git podrían hacerse efectivamente sin un control remoto. es decir. Puede agregar y puede comprometerse sin problemas.
Parece que el problema más grande con un repo de git sin un control remoto sería cosas como el git reset
. Al igual que si quieres revertir tu código a un compromiso en particular hace veinte commits, solo para probar si algo funcionó en ese momento o algo así, no parece que puedas hacerlo. Usted git reset --hard ...
y luego ha perdido sus veinte commits más nuevos y no hay forma de recuperarlos.
¿Qué más no funcionaría?
Hay varias maneras de evitar el problema que le preocupa.
Puede ser proactivo, como lo sugiere @mamapitufo, y crear una twig antes de hacer algo como git reset --hard
. Esto está bien, siempre y cuando recuerdes hacerlo regularmente.
Si no es tan clarividente, use git reflog
después de darse count de que ha perdido algunos commits que desea. git
retiene confirmaciones inalcanzables, es decir, aquellas que no se pueden encontrar desde ninguna sugerencia de twig, en el repository durante 30 días. git reflog branch-name
muestra todos los cambios recientes en el encabezado de la twig nombrada, y desde allí puede usar git reset --hard
nuevamente para volver a donde estaba.
Puede usar git checkout sha1
para moverse por el historial sin cambiar las sugerencias de sucursal. Cuando git checkout branchname
explorar, use git checkout branchname
para volver a sincronizarse con un branch head.
Finalmente, si todo lo demás falla, puede usar git fsck
para search commits colgantes. Si git fsck
no puede encontrar la confirmación que desea, solo entonces probablemente se haya eliminado del repository.
Por cierto, un repository remoto puede ser otro en la misma máquina, por lo que aún puede usar las funciones de repository remoto de git incluso sin una networking.
Puede crear una twig que apunte a la confirmación específica que desea y cambiar a ella:
git checkout -b test-branch <commit-id>
Cuando hayas terminado, puedes deshacerte de la sucursal:
git checkout master git branch -d test-branch
Nunca reinicié para la testing, simplemente compruebo esa confirmación, sí, estarás desconectado, pero a quién le importa, solo estás probando, si decides que quieres restablecer, entonces hazlo. Yo siempre hago esto
git checkout HEAD~
lo que significa que volveré a 1 commit de la cabecera actual, cuando haya terminado puedo simplemente volver al inicio del nombre de la twig porque todavía está apuntando al commit original
git checkout master # or any other branch
y para crear una nueva twig a partir del compromiso actual que puede hacer
git branch some-new-name
si necesita crear una nueva bifurcación y realizar el checkout
, puede hacer el checkout -b
como se sugirió @mamapitufo, pero no es necesario utilizar la ID de confirmación; por defecto, utiliza HEAD actual como la nueva bifurcación.
Como nota al margen, incluso si no desea crear un control remoto, es útil tener otra copy de security en otro lugar, que es "el control remoto", el control remoto podría ser otra carpeta en el mismo disco duro o una carpeta de networking, o una PC de networking, solo piense en no save todos sus huevos en una sola canasta.
PD: En realidad, el git reset
funcionaría, porque git de forma pnetworkingeterminada no elimina nada de inmediato, si realmente quieres restablecerlo, si todavía tienes el antiguo hash de confirmación, puedes restablecerlo haciendo git reset <hash>
y allí regresaste.
Pero tenga en count que no incluye files no comprometidos ni files sin seguimiento.