Digamos que tenemos la siguiente situación en Git:
Un repositorio creado:
mkdir GitTest2 cd GitTest2 git init
Algunas modificaciones en el maestro tienen lugar y se comprometen:
echo "On Master" > file git commit -a -m "Initial commit"
Feature1 se bifurcó del master y se realizó algún trabajo:
git branch feature1 git checkout feature1 echo "Feature1" > featureFile git commit -a -m "Commit for feature1"
Mientras tanto, se descubre un error en el código maestro y se establece una rama de revisión:
git checkout master git branch hotfix1 git checkout hotfix1
El error se corrigió en la rama de revisión y se fusionó nuevamente en el maestro (tal vez después de una solicitud de extracción / revisión de código):
echo "Bugfix" > bugfixFile git commit -a -m "Bugfix Commit" git checkout master git merge --no-ff hotfix1
El desarrollo en feature1 continúa:
git checkout feature1
Digamos que necesito la revisión en mi rama de características, tal vez porque el error también ocurre allí. ¿Cómo puedo lograr esto sin duplicar las confirmaciones en mi rama de características?
Quiero evitar obtener dos nuevos commits en mi rama de características que no tienen relación con la implementación de características. Esto me parece especialmente importante si utilizo solicitudes de extracción: todas estas confirmaciones también se incluirán en la solicitud de extracción y deben revisarse aunque esto ya se haya hecho (ya que la revisión ya está en el maestro).
No puedo hacer un git merge master --ff-only
: "fatal: no es posible avanzar rápidamente, abortar", pero no estoy seguro de si esto me ayudó.
git rebase
parece magia negra ...
git branch feature1
y git checkout feature1
podrían combinarse en git checkout -b feature1
y 4. podrían reducirse por completo agit checkout -b hotfix1 master
feature1
es completamente local, échale un vistazogit rebase
.