web-dev-qa-db-fra.com

Comment forcer un push de sous-arborescence pour écraser les modifications à distance?

Nous utilisons un déploiement de sous-arborescence a lá this Gist pour déployer un sous-répertoire de notre projet Yeoman . Dans notre cas, la branche est appelée production , pas gh-pages .

Cela a fonctionné parfaitement jusqu'à hier lorsque le serveur Git a rejeté la commande git subtree Push --prefix dist Origin production, en disant

 ! [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 je passe à la branche de production localement (qui est propre), git pull Retour Your branch is up-to-date with 'Origin/production'. même si j'utilise le --rebase option.

Je peux voir le contenu de la branche de production sur le serveur via notre interface utilisateur Web et il n'y a rien là qui ne devrait pas être, juste la sortie compilée de notre répertoire dist comme je m'y attendais.

À cette fin, il semble que je devrais pouvoir en toute sécurité forcer l'écrasement de ces fichiers, mais comment? git subtree Push n'a pas de --force option.

34
ele

L'astuce consistait à enchaîner le sous-arbre divisé en une poussée forcée:

git Push Origin `git subtree split --prefix dist master`:production --force

Je l'ai obtenu de l'addendum de http://clontz.org/blog/2014/05/08/git-subtree-Push-for-deployment/ , qui fait référence à this réponse sur Stack Overflow. J'avais effleuré celui-ci plus tôt mais le post de Steve Clontz l'a fait cliquer pour moi.

58
ele

Il existe en fait une solution beaucoup plus simple.

Source: https://Gist.github.com/cobyism/4730490#gistcomment-233746

Installer

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

Faire des changements

$ 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 ..
2
binarymason