1

フォルダー「myapp」を作業フォルダーにコピーした後、次の手順を実行してステージング領域に追加します。

git add .

次に、変更をコミットします。

git commit

次に、変更を Heroku にプッシュします。

git push heroku master

したがって、「myapp」という私のフォルダーはherokuに存在しますが、問題はそれが完全に空であることです。

私が次のことをすると、

git clone myapp myapp2

フォルダは、期待されるすべてのサブコンテンツとともに、ローカル マシン上で適切に複製されます。

サブフォルダの内容が Heroku に適切にプッシュされない理由を知っている人はいますか? 私は何を間違っていますか?

以下の質問に答えるには:

  1. git add .最上位フォルダー (フォルダーを含むフォルダー) で実行していますmyappgit status実行すると、コミットに変更が追加されていないことが示されます(「git add」および/または「git commit -a」を使用)
  2. はい、myappファイル/フォルダーが含まれています (私の django プロジェクト)
  3. 仮想環境を完全に別の場所に配置したため、.gitignore ファイルを削除しました。そのため、プロジェクト フォルダーにはなくなりました。その影響はないと思います。
4

2 に答える 2

3

わかりました、私は問題を解決したようです。どういうわけか git が奇妙な状態になりました。よくわかりませんが、何らかの理由でフォルダー内のファイルを追加していませんでした。

そのフォルダをコピーして新しい名前を付けただけで、ずっと行ってきたのとまったく同じプロセスを実行したところ、最終的に適切にアップロードされました.

于 2012-05-19T19:43:55.537 に答える
0

デフォルトでは、変更をリポジトリのチェックアウト ブランチにプッシュすることはできません。それは通常、大きな問題を引き起こします。通常は次のようになります。

$ git push heroku master
 ...エラーメッセージ... heroku
 ! [リモート拒否] マスター -> マスター (ブランチは現在チェックアウトされています)
エラー: 一部の参照を「heroku」
にプッシュできませんでした

エラー メッセージについて言及していないので、herokuリポジトリの構成に次を追加したか、かなり古いバージョンの Git を実行していると想定しています。

[受け取る]
        denyCurrentBranch = false

heroku新しいバージョンをリポジトリにプッシュするたびに、マスター ブランチの新しいコピーをチェックアウトしたいようです。これは post-receive フックで実現できます。herokuリポジトリにファイルを作成し、権限.git/hooks/post-receiveを付与します。+x

#!/bin/sh
while read oldrev newrev refname
do
    if test "$refname" = refs/heads/master
    then
        ( cd ..; GIT_DIR=.git; git reset --hard )
    fi
done

masterこれで、新しいブランチを にプッシュするたびherokuに、フックが実行され、新しいブランチがチェックアウトされます。この種のことを行うより良い方法がありますが、これは簡単です。

概要:デフォルトでは、変更をプッシュすると履歴のみが変更され、作業ツリーは変更されません。誰かがそのツリーで作業している可能性があるため、何かを行うと破壊される可能性があるという前提があります。

于 2012-04-14T01:55:57.953 に答える