Probar con una nueva rama huérfana (orphan branch)
En este paso, crearemos una nueva "rama huérfana" (orphan branch). Una rama huérfana es una rama que comienza sin historia de ramas anteriores. Es como comenzar una línea temporal completamente nueva en tu máquina del tiempo. Esto es útil para cosas como ramas de documentación o ramas gh-pages
para sitios web, donde no quieres que se incluya la historia de tu código principal.
Asegúrate de estar en el directorio ~/project/my-time-machine
.
cd ~/project/my-time-machine
Ahora, creemos una nueva rama huérfana llamada new-start
:
git checkout --orphan new-start
Deberías ver una salida similar a esta:
Switched to a new branch 'new-start'
Ahora hemos cambiado a la rama new-start
. Observa que los archivos de la rama master
todavía están presentes en tu directorio de trabajo. Esto se debe a que git checkout --orphan
prepara tu directorio de trabajo y el índice (index) para un nuevo commit raíz, pero no elimina los archivos existentes.
Veamos el estado:
git status
Deberías ver algo como esto:
On branch new-start
Untracked files:
(use "git add <file>..." to include in what will be committed)
message.txt
nothing added to commit but untracked files present (use "git add" to track)
Git ve message.txt
como un archivo no rastreado porque la historia de la rama new-start
es completamente independiente de master
.
Para comenzar realmente de nuevo en esta rama huérfana, normalmente eliminamos los archivos antiguos y luego agregamos el nuevo contenido para esta rama. Eliminemos el archivo message.txt
:
rm message.txt
Ahora, veamos el estado nuevamente:
git status
Deberías ver:
On branch new-start
No commits yet
nothing to commit (create/copy files and use "git add" to track)
El directorio de trabajo ahora está limpio y estamos listos para crear el primer commit en nuestra nueva línea temporal independiente.
Creemos un nuevo archivo específico para esta rama:
echo "This is a fresh start!" > readme.md
Agreguemos el nuevo archivo al área de preparación (staging area):
git add readme.md
Y finalmente, creemos el primer commit en la rama new-start
:
git commit -m "Initial commit for new-start branch"
Deberías ver una salida similar a esta:
[new-start (root-commit) a1b2c3d] Initial commit for new-start branch
1 file changed, 1 insertion(+)
create mode 100644 readme.md
Observa que este commit también es un "(root-commit)", al igual que el primer commit en la rama master
. Esto confirma que no tiene padre y es el comienzo de una nueva historia.
Ahora, veamos el registro (log) de esta rama:
git log --pretty=oneline
Deberías ver solo el único commit que acabamos de hacer:
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> new-start) Initial commit for new-start branch
Esto demuestra que la rama new-start
tiene su propia historia independiente, separada de la rama master
.