コードブランチのディレクトリ全体をどういうわけか削除しました。新しいものをクローンしました。プッシュ以外は問題なく動作しました。
~/workspace/wtf (mybranch)]$ git push origin mybranch
error: Cannot access URL [my url], return code 22
fatal: git-http-push failed
ただし、git pullは機能します。どうすれば修正できますか?
コードブランチのディレクトリ全体をどういうわけか削除しました。新しいものをクローンしました。プッシュ以外は問題なく動作しました。
~/workspace/wtf (mybranch)]$ git push origin mybranch
error: Cannot access URL [my url], return code 22
fatal: git-http-push failed
ただし、git pullは機能します。どうすれば修正できますか?
回答:
新鮮なコピーにsshではなくhttpsを使用するという間違いを犯しました。それ以来、変更とコミットを行いましたが、明白な理由でプッシュできませんでした。
回復するために、.git / configのセクション[remote "origin"]を単純に変更しました。
に
url = git@github.com:AIFDR / riab_core.git
その後、もう一度押すことができました。
git-http-push failed
、私はopがhttpまたはhttps -1で設定しようとしているのを見ます。
git 1.6.6以降の新しい「smart-http」サポート。新しい方法では、個別のファイルとしてではなく、パック全体を一度に送信できます。
また、gitwebを使用して、同じ場所で閲覧可能なURLを提供することもできます。
注:アクセスはApacheによって制御されるため、各リポジトリのセットアップに認証要件(htaccessまたはldapなど)を追加できます。
この回答は、リモートサーバーを所有しており、httpサポートを追加/修正することを前提としています。
最初:apacheログを確認します。apacheがgit-http-backed cgiスクリプトを実行しようとしたときに、アクセス許可が拒否された/エラーを特定できない可能性があります。
新しいgit_support.confファイルを作成し、Apacheに含めるだけです(httpd.confにincludeステートメントを追加します)
#
# Basic setup for git-http-backend
#
SetEnv GIT_PROJECT_ROOT /opt/git_repos
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER #IMportant !!! This could be your problem if missing
<Directory /opt/git> # both http_backend and gitweb should be somewhere under here
AllowOverride None
Options +ExecCGI -Includes #Important! Lets apache execute the script!
Order allow,deny
Allow from all
</Directory>
# This pattern matches git operations and passes them to http-backend
ScriptAliasMatch \
"(?x)^/git/(.*/(HEAD | \
info/refs | \
objects/(info/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(upload|receive)-pack))$" \
/opt/git/libexec/git-core/git-http-backend/$1
# Anything not matched above goes to displayable gitweb interface
ScriptAlias /git /opt/git/cgi-bin/gitweb.cgi/
その結果、プッシュ/プルが可能になります。
me@machine /tmp/eddies $ git pull
Already up-to-date.
me@machine /tmp/eddies $ touch changedFile
me@machine /tmp/eddies $ git add .
me@machine /tmp/eddies $ git commit -am"commiting change"
[master ca7f6ed] commiting change
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 changedFile
me@machine /tmp/eddies $ git push origin master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 239 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)
To http://mysecretdomain.com/git/eddies
0f626a9..ca7f6ed master -> master
また、これらの変更をオンラインで閲覧できます。
ソース:http : //repo.or.cz/w/alt-git.git?a=blob_plain ; f=gitweb / README
"SetEnv takes 1-2 arguments, an environment variable name and optional value to pass to CGI."
なぜですか?
http上で「git push」を有効にするには、WebサーバーでWebDAVを有効にする必要があります。Apache Webserverでこれを行うには、単に構成ファイルを編集します。
vim /etc/httpd/conf/httpd.conf
次に、次で始まる行を検索します。
<Directory "/var/www/html">
その直後に次の行を追加します。
Dav On
httpd.confにも次の行がコメント解除されていることを確認してください。
LoadModule dav_fs_module modules/mod_dav_fs.so
その後、準備が整いました。以下を使用してApache Webserverを再起動します。
service httpd restart
また、サーバー上のすべてのgitリポジトリファイルを、pache:apacheユーザーおよびグループが以下を使用して書き込み可能にするようにしてください。
chown -R apache:apache /var/www/html/your_git_repository
それ以外の場合、「git push」を実行すると、適切な権限の設定に失敗すると「PUTエラー:curl result = 22、HTTPコード= 403」が発生します。
クライアントマシンから「git push」を実行するだけで、すべてが機能するはずです。
HTTPを使用してクローンを作成したリポジトリをプッシュすることはできません。URLをa ssh://
またはgit://
type URL に更新する必要があります。
git remote -v
ますか?
.git / configファイルの次のセクションを編集します。
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = http://git.repository.url/repo.git
に
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = http://username:password@git.repository.url/repo.git
それから試してくださいgit push origin master
。
必要に応じて、他のリポジトリURLの構成ファイルで認証の詳細を編集し、必要なブランチにプッシュします。
git remote set-url origin ...
同様に動作します。
git-http-backend、ldap authentication configを使用したプッシュ操作でも同じ問題が発生しました。
最後に、私は解決策を見つけて、このserverfault質問でそれを説明しました
同様の問題を抱えている人を助けるかもしれません。
すばらしいです
私は他のエラーがありましたが、うまくいきます!
私が説明しよう:
Could not LOCK /path/to/www/gitproject/refs/heads/master due to a failed precondition (e.g. other locks)
user1520409
ist works からの回答を使用しました。しかし、プッシュメッセージのテキストからパスワードを非表示にする方法は?
http.receivepack
。