10

シナリオは次のとおりです。

1) 私のプロジェクト パートナーと私は、コード リポジトリとして github を使用して、Ruby on Rails アプリに一緒に取り組んでいました。

2) アプリは彼女の github アカウントの下にあり、彼女は私をコラボレーターとして追加しました

3) 彼女は Heroku にデプロイし、私も協力者として追加してくれました

4) 既存の Heroku リモート アプリを既存のローカル アプリにリモートとして追加する目的で、既存のアプリ ディレクトリから次のコマンドを使用しました。前述のように、私の既存のローカル アプリには、既にリモート github がありました。

git remote add heroku git@heroku.com:codefellow.git 

5) いくつかの変更を加えて github にプッシュしたところ、すべてが最新の状態でした

6)次に、次のコマンドでherokuにプッシュしようとしました

git push heroku master

7) これにより、以下に示すように、ブランチの先端が遅れているというエラーが表示されましたが、github からプルしようとすると、以下にも示すように最新であると表示されました。

➜  code-fellows-alumni git:(master) git push heroku master
To git@heroku.com:codefellow.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@heroku.com:codefellow.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
➜  code-fellows-alumni git:(master) git pull
Already up-to-date.

ここで何が起こっているか知っている人はいますか?Github を最新の状態にしているのに、ローカル ブランチが Heroku と同期していないのはどうしてですか? 私のプロジェクト パートナーが変更を最初に Github にプッシュせずに Heroku にプッシュすることは可能でしたか? 確認したところ、彼女はアプリケーションのフォークを持っていません。現時点では、彼女が何をしたのかを確認するために彼女と連絡を取ることはできません。Github に変更がプッシュされていなければ、変更を Heroku にプッシュできるかどうかさえわかりません。どんな洞察も大歓迎です。すでに Github とローカルで同期しているため、必ずしも Heroku からアプリを複製したくありません。Github をコード リポジトリとして使用したいのですが、Heroku のクローンから始めるのは気が進まないです。私はすでにこれに関するHerokuのドキュメントを見てきました:https://devcenter.heroku.com/articles/git . クローンを作成するように言われているだけですが、前述の理由からそれを実行したくありません。この質問への回答 (既存の Heroku アプリとフォルダーをリンクする方法) の指示に従ってここまでたどり着きましたが、足りない部分があるか、私のプロジェクト パートナーが異常なことをしたようです。役立つアイデアをお寄せいただきありがとうございます。

4

1 に答える 1

42

表示されているメッセージは、ローカル コピーにない変更がアプリケーションに加えられたことを意味します。Heroku リモートがあなたのものよりもはるかに進んでいるため、プッシュすると拒否されます。したがって、パートナーが Github にプッシュせずに Heroku にプッシュしたと考えるのは正しいです。Heroku にデプロイするときにローカル リポジトリからデプロイするため、これは一般的なシナリオです。通常は Github からコードをデプロイする従来の Capistrano デプロイとは異なります。

これが起こらないようにするための作業方法を考え出すのは、チームとしてのあなた次第ですが、今すぐ作業を開始する必要がある場合は、次のいずれかを実行できます。

  • git push heroku master -f. これにより、変更が強制され、現在コードにあるものが上書きされます
  • git pull heroku masterHeroku からの変更をローカル リポジトリにプルして、変更があるgit push heroku masterときに実行できるようにする必要があります。
于 2013-09-07T06:59:18.497 に答える