Soy bastante nuevo en GIT pero entendí los conceptos básicos bastante bien. Sin embargo, me siento confundido …
Estamos usando github, y mi twig estaba 13 adelante y 20 detrás de la twig principal (tan desactualizada).
Hice lo siguiente:
git checkout myBranch git rebase master
Parece que he fusionado los mismos files repetidamente por alguna razón.
Supongo que es porque estoy aplicando mis cambios a cada una de las diferentes versiones que se han comprometido en la twig principal.
Esto llevó bastante time, y cuando terminé, asumí que podría simplemente empujar mi (ahora, afortunadamente, actualizada) twig a Github. Pero me dice que tengo cambios rápidos no rápidos, que no entiendo …
Entonces hago un pull, y git me dice que tengo que fusionar todos los mismos files otra vez …
Debo estar perdiendo algo fundamental en mi comprensión de lo que está sucediendo aquí.
Esencialmente, rebase
remueve temporalmente sus confirmaciones, las almacena como parches, obtiene el encabezado del maestro y luego vuelve a aplicar sus parches.
Aquí hay un website que explica qué git rebase es suculento: http://book.git-scm.com/4_rebasing.html .
TEN CUIDADO: ¡ Aquí hay dragones!
Si está absolutamente seguro de que no habrá problemas, puede ignorar el error y ejecutar git push --force
. SIN EMBARGO, corre el riesgo de romper el repository central . No recomendado por Github – http://help.github.com/remotes/ Busque la sección Dealing with “non-fast-forward” errors
O para tratar de resolver primero extraer y luego empujar – git pull origin master
luego git push origin master
Una opción sería usar git merge
lugar de rebase
. git pull origin master
Master para actualizar el master. Ha habido debates en la comunidad sobre rebase vs merge y cada uno tiene sus pros y sus contras.
Para evitar la duplicación del contenido, los artículos que cubren el mismo tema – http://softwareswirl.blogspot.com/2009/04/truce-in-merge-vs-rebase-war.html , flujo de trabajo de Git y rebase vs fusión de preguntas y http : //www.randyfay.com/node/89 .
Ejemplos de fusión en master:
git checkout master
y luego git merge mybranch
Para combinar maestro en mybranch y luego fusionar en maestro
git checkout mybranch
y luego git merge master
git checkout master
y luego git merge mybranch