trucos tag sirven ramas que para name las hace commits commands comentarios git yeoman git-subtree

git - tag - ¿Cómo fuerzo un impulso de subárbol para sobrescribir cambios remotos?



para que sirven las ramas git (2)

Utilizamos un despliegue de subárbol en este Gist para implementar un subdirectorio de nuestro proyecto Yeoman . En nuestro caso, la rama se llama producción , no gh-pages .

Esto funcionó a la perfección hasta ayer cuando el servidor Git rechazó el comando git subtree push --prefix dist origin production , diciendo

! [rejected] 9fe1683aa574eae33ee6754aad702488e0bd37df -> production (non-fast-forward) error: failed to push some refs to ''[email protected]:web-and-new-media/graduation2015.git'' hint: Updates were rejected because a pushed branch tip is behind its remote hint: counterpart.

Si cambio localmente a la rama de producción (que está limpio), git pull devuelve Your branch is up-to-date with ''origin/production''. incluso si uso la opción --rebase .

Puedo ver el contenido de la rama de producción en el servidor a través de nuestra interfaz de usuario web y no hay nada allí que no debería ser, solo la salida compilada de nuestro directorio dist como lo esperaba.

Con ese fin, parece que debería poder forzar una sobrescritura de estos archivos, pero ¿cómo? git subtree push no tiene una opción --force .


El truco era encadenar la división del subárbol en un empuje forzado:

git push origin `git subtree split --prefix dist master`:production --force

Obtuve esto del Addendum de http://clontz.org/blog/2014/05/08/git-subtree-push-for-deployment/ , que realmente hace referencia a this respuesta en . Ya lo había visto antes, pero la publicación de Steve Clontz hizo que hiciera clic para mí.


En realidad, hay una solución que es mucho más simple.

Fuente: https://gist.github.com/cobyism/4730490#gistcomment-2337463

Preparar

$ rm -rf dist $ echo "dist/" >> .gitignore $ git worktree add dist gh-pages

Haciendo cambios

$ make # or what ever you run to populate dist $ cd dist $ git add --all $ git commit -m "$(git log ''--format=format:%H'' master -1)" $ git push origin production --force $ cd ..