Comprender la ramificación de git

Tengo una pregunta de novato sobre Git.

El escenario:

1) Creé una twig de "experimento" en un proyecto

2) Luego decido hacer un cambio (por ejemplo, agregar files a .gitignore) que debe afectar la twig "experimento", así como la twig principal o cualquier twig futura que yo ramifique desde la twig principal.

¿Qué se recomienda en esa situación?

¿ --amend la última confirmación en la twig principal antes de la bifurcación y confirmar con --amend ?

Crear una twig para hacer eso y luego fusionar con el maestro y la twig de experimento? Cuando traté de hacer esto, apliqué todo lo que estaba en mi twig de "experimento" a la twig principal y perdí una gran cantidad de files. Estoy muy confundido ahora … cualquier ayuda será muy apreciada

actualizar

Lo que sucedió (y no pude explicarlo en mi último párrafo anterior):

De hecho, había fusionado la twig 'hotfix' (que tenía el .gitignore commited) en la twig 'experiment' y luego la fusioné con master (en la twig 'experiment' había eliminado un montón de files).

Entonces usé:

 git checkout master git reset —hard [hash for the previously last commit on master] git branch -d hotfix git checkout -b hotfix (now from master) git add .gitignore git commit -m “add .gitignore” git checkout master git merge hotfix git checkout experiment git merge hotfix git branch -d hotfix 

Luego, como que 'deshice' eso y lo hice nuevamente usando el método rebase, de una de las respuestas a continuación. Me atraía más por la cuestión de la "reescritura de la historia", que tiene más sentido para mí al mirar el gráfico de la twig. Y estoy trabajando solo (hasta ahora) en este proyecto.

No sé si entiendo el contenido de su último párrafo correcto. ¿Te has cruzado en la dirección correcta? El siguiente procedimiento debería funcionar

 git branch MaintainGitIgnore git checkout MaintainGitIgnore //manipulate .gitignore file git commit -a .gitignore -m "Ignoring new files now" git checkout master git merge MaitainGitIgnore git checkout experiment git merge MaintainGitIgnore 

Ahora puede mantener la twig MaintainGitIgnore, y tal vez usar una secuencia de commands para automatizar la actualización ignore la definición.

Puede usar rebase después de rebase el nuevo .gitignore a la twig principal.

git checkout master git add .gitignore git commit -m 'Updates ignore list' git checkout experiment git rebase master

Esto actualizará la twig de experiment .

Pero, por favor, solo haz esto si eres la única persona que trabaja en esta twig. Si alguien más está trabajando también, dará problemas de conflicto. En ese caso, fusionaría la twig master en el experiment uno.