Comprender los files de ramificación y almacenamiento de git

Estoy un poco confundido acerca de los beneficios de la bifurcación en git.

Si creo una bifurcación, digamos, b1 y cambio a esta bifurcación, cualquier cambio que realice será visible si return a la bifurcación maestra.

La ejecución de un estado de git en la twig principal muestra los cambios desde la twig b1.

Entiendo que primero se deben comprometer los cambios en b1, pero ¿cómo se pretende uno administrar múltiples twigs sin comprometer accidentalmente un cambio desde otra twig?

Si, justo después de cambiar a maestro, observa que olvidó realizar etapas o realizar algunos cambios, puede volver inmediatamente con git checkout b1 , por supuesto, y luego confirmarlos.

Sin embargo, tienes razón en que es muy fácil realizar cambios en la twig incorrecta. Afortunadamente, las twigs de git son muy livianas, son solo un puntero a la punta de la twig en el gráfico de confirmación, y git tiene buenas herramientas para reescribir el historial para que luzca como te gustaría. Exactamente lo que necesitarías hacer depende de la secuencia de lo que has hecho, pero hay muchas preguntas sobre Stack Overflow que tratan sobre esto. (O puede simplemente pedir uno nuevo si no está claro.) Aquí hay un ejemplo simple:

  • ¿Cómo arreglar el compromiso con la twig equivocada de Git?

… o si has hecho muchos commits en master que de repente te das count son muy controvertidos, y deberías estar en una nueva twig de temas, puedes hacer lo siguiente:

 # Check that git status is clean and you really are on the master branch: git status # Create a branch based on your current position: git branch controversial # Move master back to the last non-controversial commit, making # sure that the working tree and index match: git reset --hard <NON-CONTROVERSIAL-COMMIT> 

Si ya hubo muchos commits en su branch b1 existente, entonces puede seleccionar los de master:

 # Switch back to `b1`: git checkout b1 # Cherry-pick the commits that you'd rather were on b1: git cherry-pick <CONTROVERSIAL-COMMIT-A> git cherry-pick <CONTROVERSIAL-COMMIT-B> # Switch back to `master`: git checkout master # Reset master back to the last non-controversial commit, making # sure that the working tree and index match: git reset --hard <NON-CONTROVERSIAL-COMMIT> 

… de si tienes muchos commits en master que deberían estar en b1 puedes usar git rebase .

En resumen, es fácil recuperarse de este tipo de cosas; solo tiene que entender cómo se ve el gráfico de compromiso en el lugar donde se encuentra, y cómo prefiere que se vea.

Si está usando git desde la command-line, algo bueno es escribir la twig actual en el prompt bash, por ejemplo

http://railstips.org/blog/archives/2009/02/02/bedazzle-your-bash-prompt-with-git-info/

De esta forma, no tienes que escribir "git branch" todo el time para saber a qué twig te estás comprometiendo ahora mismo.