1

AngularJS 静的サイト (Yeoman で開始) を Github ページとしてデプロイしようとしており、Yeoman デプロイ ガイドに記載されている手順に従っていました。ステップ 1 と 2 では成功しますが、ステップ 3 に到達すると事態は悪化します。ステップ3は実行するように指示します

git subtree push --prefix dist origin gh-pages

実行すると、これが表示されます

$ git subtree push --prefix dist origin gh-pages
git push using:  origin gh-pages
To git@github.com:siddhion/maxmythic_angular.git
 ! [rejected]        5db3233d7c0822eedc5500409ce6a2d4b73ad427 -> gh-pages (non-fast-forward)
error: failed to push some refs to 'git@github.com:siddhion/maxmythic_angular.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and merge the remote changes
hint: (e.g. 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

次に、ヒントに従って試してみます

$ git pull origin master
From github.com:siddhion/maxmythic_angular
 * branch            master     -> FETCH_HEAD
Already up-to-date.

その後、再試行git subtree push --prefix dist origin gh-pagesしましたが、以前と同じエラーが発生しました。

Yeoman の展開ページで、いくつかの一般的なエラーセクションの下に表示されます

現在のブランチのヒントが遅れているため、この更新が拒否されたというエラーが表示される場合があります。これは、リモートに強制的にプッシュすることで解決できます (ただし、既存のものはすべて破棄されることに注意してください)。

私はsubtree push一般的にgitを初めて使用し、何が破棄されるかわからないため、強制するのが心配です。つまり、私は現在gh-pagesmaxmythic_angularoriginリモートにブランチを持っていないので、それについては心配していませんが、そこにmaster,gh-pages-oldgh-pages-v1ブランチがあります。実行すると、それらは破壊されますgit subtree push --prefix dist origin gh-pagesか?

アップデート

安全のために作業を別のフォルダーにコピーし、コマンドに追加--forceして実行しました。git subtree pushこれは私が得たものです

$ git subtree push --prefix dist origin gh-pages --force
error: unknown option `force'
usage: git subtree add   --prefix=<prefix> <commit>
   or: git subtree add   --prefix=<prefix> <repository> <commit>
   or: git subtree merge --prefix=<prefix> <commit>
   or: git subtree pull  --prefix=<prefix> <repository> <refspec...>
   or: git subtree push  --prefix=<prefix> <repository> <refspec...>
   or: git subtree split --prefix=<prefix> <commit...>

    -h, --help            show the help
    -q                    quiet
    -d                    show debug messages
    -P, --prefix ...      the name of the subdir to split out
    -m, --message ...     use the given message as the commit message for the merge commit

options for 'split'
    --annotate ...        add a prefix to commit message of new commits
    -b, --branch ...      create a new branch from the split subtree
    --ignore-joins        ignore prior --rejoin commits
    --onto ...            try connecting new tree to an existing one
    --rejoin              merge the new branch back into HEAD

options for 'add', 'merge', 'pull' and 'push'
    --squash              merge subtree changes as a single commit

自分のサイトを gh-pages にデプロイできるようにコマンドを機能させるにはどうすればよいですか?git subtree push --prefix dist origin gh-pages

アップデート

この問題が指示に関係しているのか、それともレポに何か怪しいものがあるのか​​ を確認したかったので、新しいAngularアプリをセットアップしyo angular、展開手順に従いました。git subtree push今回働いた。私のgh-pagesリポジトリに何が起こったのか、まだわかりません。私は本当に徹底的に学ばなければなりませんgit

4

2 に答える 2

0

また、サブツリー メソッドをしばらく使用して、典型的な Yeoman の dist フォルダーをリモート (私の場合は gh-pages) にプッシュしました。これはやるべきことですが、サーバーで何かが変更されると頭痛の種になります。次に、上記で説明したはるかに洗練されていないソリューションに頼る必要があります。そして、お気づきのように、これらはさらに厄介な問題を引き起こします。この特定のワークフローでは、サブツリー メソッドを使用するのはハックだと思います。

これにはもっと良い解決策があります: Rob Wierzbowski によるgrunt-build-controlです。インストールには 10 分かかりますが、魅力のように機能し、リモートへのビルド フォルダーのデプロイ全体が自動になります。完全にバージョン管理されており、簡単です。

現在はYeoman wikiでも言及されています。

于 2014-07-12T11:36:49.450 に答える