Мерзавец толкнуть фатально не удалось
Я как-то удалил весь каталог моей ветки кода. Я клонировал новый. Работало нормально, кроме нажатия.
~/workspace/wtf (mybranch)]$ git push origin mybranch
error: Cannot access URL [my url], return code 22
fatal: git-http-push failed
Git Pull работает, хотя. Как я могу это исправить?
8 ответов
Я сделал ошибку, используя https вместо ssh для свежей копии. С тех пор я вносил изменения и коммиты, но не мог настаивать по понятным причинам
Чтобы восстановить, я просто изменил раздел [remote "origin"] в.git / config из
в
url = git@github.com:AIFDR/riab_core.git
После этого я мог снова нажать.
Быстрее HTTP Push только с git - webDAV не требуется
Новая поддержка "smart-http" начиная с git 1.6.6. Новый метод позволяет передавать весь пакет сразу, а не в виде отдельных файлов.
Вы также можете использовать gitweb для предоставления просматриваемых URL-адресов в том же месте.
Примечание. Поскольку доступ контролируется Apache, вы можете добавить любые требования Auth (htaccess или ldap и т. Д.) К настройке для каждого репозитория.
Этот ответ предполагает, что вы владеете удаленным сервером и хотите добавить / исправить поддержку http.
ПЕРВЫЙ: Проверьте журналы apache, вероятно, в разрешении отказано / невозможно найти ошибку, когда apache пытается выполнить сценарии cgi, поддерживаемые git-http.
Добавление поддержки HTTP в git
Просто создайте новый файл git_support.conf и включите его в apache (добавьте оператор include в httpd.conf)
#
# 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
Чтобы включить "git push" через http, вы должны включить 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, используя:
service httpd restart
Также убедитесь, что все файлы репозитория git на сервере доступны для записи пользователю и группе pache: apache, используя:
chown -R apache:apache /var/www/html/your_git_repository
В противном случае неправильная установка прав доступа приведет к "ошибке PUT: curl result=22, HTTP code=403" при выполнении "git push".
Теперь просто сделайте "git push" со своего клиентского компьютера, и все должно работать.
Вы не можете нажать на репозиторий, который вы клонировали через HTTP. Вам нужно обновить URL либо ssh://
или git://
введите URL.
Отредактируйте следующий раздел вашего файла.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-адресов хранилища, как требуется, и нажмите на нужную ветку.
У меня была такая же проблема с операцией push с git-http-backend, конфигурацией аутентификации ldap.
Наконец я нашел решение и опишу его в этом вопросе о сбое сервера
Может быть, это поможет кому-то с подобной проблемой.
Большой
у меня были другие ошибки, но это работает!
я пытаюсь объяснить:
- установить сервер Ubuntu с Apache2 и WebDAV
- Посмотрите на http://www.mabishu.com/blog/2011/02/09/setup-a-remote-git-repository-using-http-with-push-support-and-digest-auth/ для деталей
- клон на клиенте -> Отлично!
- изменить что-то....
- нажать -> не удалось
- сменить владельца на сервере
- Ошибка "PUT error: curl result=22, HTTP code=403" исчезла..
- теперь только говорит git-http-push не удалось
- serverlog:
Could not LOCK /path/to/www/gitproject/refs/heads/master due to a failed precondition (e.g. other locks)
- я использовал ответ от
user1520409
это работает.
НО как скрыть пароль от текста при нажатии на сообщение?
Это также может произойти, если вы ввели неправильный пароль.