viabilidad de git sin un repository remoto

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.