0

以下のコードを使用しました:

    echo exec("git add . ");  //this is working  
echo exec("git commit -am 'first commit' "); //also working  
echo exec("git push origin master");  //NOT WORKING, also not showing any error . 

user から www-data へのフォルダーのアクセス許可を chown しました。そのため、いくつかの git コマンドは機能していますが、

GIT PUSH ORIGIN MASTER

php exec から動作していません。解決策は何ですか?また、exec の PUSH でエラーやメッセージが表示されない理由を教えてください。これらのメッセージを表示するにはどうすればよいですか。また、可能であれば、 php exec から git コマンドをより高度に使用するための適切なリンクを提供してください。

更新:私もこれを試しました:ファイル .git/hooks/post-commit を作成してポストコミットフックを追加しました

私はそれにこのコードを追加しました:

git push origin master

しかし、コミット後にメッセージやエラーは発生しませんでした。コミットしただけでプッシュはしませんでした。

ありがとう !

4

2 に答える 2

2

pushコマンドはリモートリポジトリ(つまり、システム上の別のフォルダではなく、SSH / HTTPSの背後にあるリモートサーバー)にプッシュしようとすると思います。

この場合、HTTPSクライアント証明書HTTPSまたはSSHキーが欠落している可能性があります。Webサーバー(したがってPHP)は、おそらく別のユーザーとして実行され、秘密鍵にアクセスできません。その次に、秘密鍵にパスワードが必要な場合、execコマンドは対話型セッションではないため、パスワードは機能しません。

とにかく、バイナリを呼び出さずに、ある種のバインディングを使用することを強くお勧めします。直接呼び出すと新しいプロセスが開始されますが、これはライブラリを呼び出すよりもはるかに非効率的です。

于 2012-06-30T21:03:54.737 に答える
0

どのブランチにいるか確認しましたか?「git status」が教えてくれます。

また、マスターではなく、ブランチで作業することをお勧めします。

git ブランチ dev_test

git チェックアウト dev_test

git add .

git commit -a -m "最初のコメント"

git push オリジン dev_test

git チェックアウト マスター

gitマージdev_test

git push オリジンマスター

于 2012-06-28T09:11:21.250 に答える