在本文中,我们将为您详细介绍通过Apache的gitolite仓库的GitSmartHTTP不允许我推送的相关知识,并且为您解答关于git访问不了的疑问,此外,我们还会提供一些关于2.github创建
在本文中,我们将为您详细介绍通过Apache的gitolite仓库的GitSmartHTTP不允许我推送的相关知识,并且为您解答关于git访问不了的疑问,此外,我们还会提供一些关于2. github创建 git仓库,克隆,拉取和推送操作(所有的git命令前提是一定在当前项目目录下)、7步把本地Git仓库推送到已新建的Github仓库、Apache DocumentRoot的Gitolite本地工作副本、Centos7 以http方式搭建git服务器 apache+git的有用信息。
本文目录一览:- 通过Apache的gitolite仓库的GitSmartHTTP不允许我推送(git访问不了)
- 2. github创建 git仓库,克隆,拉取和推送操作(所有的git命令前提是一定在当前项目目录下)
- 7步把本地Git仓库推送到已新建的Github仓库
- Apache DocumentRoot的Gitolite本地工作副本
- Centos7 以http方式搭建git服务器 apache+git
通过Apache的gitolite仓库的GitSmartHTTP不允许我推送(git访问不了)
我设置了一个git-http-backend CGI脚本来处理我的git.domain子域。 服务器位于AWS云上的ELB(弹性负载均衡器)之后。 我的服务器configuration如下(我的git托pipe由gitolite处理):
<VirtualHost *:80> ServerName git.domain ServerAdmin hjpotter92+git@domain #SuexecUserGroup git git DocumentRoot /opt/gitolite/repositories/ PerlLoadModule Apache::Authn::Redmine SetEnv GIT_PROJECT_ROOT /opt/gitolite/repositories/ SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER # Have also tried removing this variable SetEnv GIT_HTTP_EXPORT_ALL ScriptAliasMatch "(?x)^/(.*/(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/gitolite/git-core/git-http-backend/$1 <Directory "/opt/gitolite/git-core"> AllowOverride None Options +ExecCGI -Includes Require all granted </Directory> <Location /> # enabled in desparation... # saw it somewhere in bugzilla powered mailing list DAV On Order allow,deny Require all granted AuthType Basic AuthName "Git Repositories" AuthUserFile /dev/null Require valid-user PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler RedmineDSN "DBI:MysqL:database=redmine;host=endpoint.rds.amazonaws.com" RedmineDbUser "user" RedmineDbPass "your" RedmineGitSmartHttp yes </Location> LogLevel info CustomLog /var/log/apache2/gitolite.access.log combined ErrorLog /var/log/apache2/gitolite.error.log </VirtualHost>
我的apache服务器是由www-data:www-data user / group运行的,gitolite是用git:git user / group设置的。 为了让apache读取/写入存储库,我做了:
# usermod -a -G git www-data // and as a desparate measure,in frustration,the following: # usermod -a -G www-data git
PerlAccessHandler和用户身份validation工作正常,因为我能够使用redmine安装程序的有效凭据克隆我的存储库。
但是,当我试图推动; 我在服务器日志中得到以下内容:
在Ubuntu 14.04上,VirtualHost总是使用Apache返回默认主机
我如何设置VirtualHosts指向同一IP上的两个端口到不同的ServerNames?
如何在Debian上的Apache 2.4中selectPHP版本5和7?
如何在Ubuntu上为Apache2configuration子域名?
为什么我的PHP源代码显示?
10.0.225.176 [11/Feb/2017:07:46:26 +0530] "GET /xxx.git/info/refs?service=git-upload-pack HTTP/1.1" 401 726 "-" "git/2.11.0" 10.0.225.176 [11/Feb/2017:07:46:27 +0530] "GET /xxx.git/info/refs?service=git-upload-pack HTTP/1.1" 401 725 "-" "git/2.11.0" 10.0.225.176 [11/Feb/2017:07:46:27 +0530] "GET /xxx.git/info/refs?service=git-upload-pack HTTP/1.1" 200 848 "-" "git/2.11.0" 10.0.225.176 [11/Feb/2017:07:46:27 +0530] "POST /xxx.git/git-upload-pack HTTP/1.1" 200 130408 "-" "git/2.11.0"
并在客户端(以下出现在我的负载平衡器,30秒到10分钟的任何连接超时后):
Counting objects: 2,done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2),done. Writing objects: 100% (2/2),930 bytes | 0 bytes/s,done. Total 2 (delta 1),reused 0 (delta 0) error: RPC Failed; HTTP 504 curl 22 The requested URL returned error: 504 GATEWAY_TIMEOUT fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedly
通常情况下,我也有长度为0的git-upload-pack的POST (对于同一个存储库中的同一个命令)
10.0.225.222 [11/Feb/2017:07:50:55 +0530] "POST /pandorica.git/git-receive-pack HTTP/1.1" 200 0 "-" "git/2.11.0" 10.0.225.222 [11/Feb/2017:07:53:21 +0530] "POST /pandorica.git/git-receive-pack HTTP/1.1" 200 0 "-" "git/2.11.0"
并在我的服务器错误日志中收到以下内容:
[core:error] [pid 1683] (70007)The timeout specified has expired: [client 10.0.225.176:2534] AH00574: ap_content_length_filter: apr_bucket_read() Failed [cgid:error] [pid 1683] (70007)The timeout specified has expired: [client 10.0.225.176:2534] AH02550: Failed to flush CGI output to client
我甚至玩过git用户的setuid和setuid,希望能帮我推送一个仓库。 但无济于事!
chmod u+s /opt/gitolite/repositories chmod g+s /opt/gitolite/repositories // and the same commands for `*.git` inside `repositories`
/opt/gitolite/repositories/xyz.git/的gitconfiguration:
http.postbuffer=200M core.repositoryformatversion=0 core.filemode=true core.bare=true redminegitolite.projectid=xxx http.receivepack=true http.uploadpack=true
对于参考资料,我已经完成了以下各项:
GIT-HTTP的后端
Apache和git-http-backend
如何设置通过http的git?
用Apache 2.4设置git-http-backend
在Windows上设置Git服务器使用git-http-backend.exe
如何设置Apache VHost,使其开始接受git push 。
虚拟主机2没有wwwredirect到虚拟主机1
configuration虚拟主机和本地主机redirect到xampp文件夹
如何在Nginx中设置大量的dynamic虚拟主机?
Nginx反向代理设置,连接到上游时,768个worker_connections是不够的
将Google云端硬盘目录用作Apache虚拟主机
总结
以上是小编为你收集整理的通过Apache的gitolite仓库的GitSmartHTTP不允许我推送全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
2. github创建 git仓库,克隆,拉取和推送操作(所有的git命令前提是一定在当前项目目录下)
步骤:
1.点击小猫,回到初始页面
2.点击start a project,首先会出现一个验证email地址(我们注册的时候,有一个email输入,进去邮箱验证一下)
3.重新点击start a project,进入一个页面。填完以后点击 create repository
4.出现以下的页面,只需要关心框里面的那一行信息,这是远程仓库的地址。之后的都是一些git的命令。
需要注意ssh和https,之前我们配置的是ssh,所以,我们就要用到ssh里面的地址。
5.可以在自己的本地新建一个文件,cd到文件夹下,然后执行 “git clone git@github.com:peixm/Autotest.git” 这个命令,那么,本地就会有了这样的项目
6.自己在本地修改项目,新建文件,然后都可以提交到远程仓库中去。
首先新建一个test.txt文件,然后往里面随便写点什么。
然后git status是查看项目有什么修改,下面出现红色的test.txt,说明有一个test.txt是被修改过,或者新加的。
之后执行git add test.txt ,如果由多个,可以执行 git add . 代表全部添加进去
然后说明提交的信息用命令 git commit -m "提交的信息"
接下来直接提交到远程仓库。用git push命令
7.现在我们来看 github上面。先点击绿色的头像,然后点击Your profile,进入一个页面,点击你所提交的项目。
8.如果要下拉的话,需要用到git pull的命令。
fork: fork怎么用,如果第一次没有fork过,那么先拷贝以下项目的路径,作为upstream master。然后点击fork一下,再点击your profile,然后查看自己的地址。将自己的地址作为 origin 仓库。每次提交代码都是提交到自己的origin仓库。
以下是一些命令
git pull upstream master 从远程仓库拉取代码
git remote add upstream +ip 设置远程仓库的地址
git remote -v 查看当前仓库的地址 查看所有仓库地址
git remote origin set-url URL
git remote rm origin 先删除后添加
git remote add origin http 添加自己的仓库地址
7步把本地Git仓库推送到已新建的Github仓库
你在本地已经一个项目,想使用Git进行版本管理,并推送到已新建的GitHub仓库。可参考以下步聚:
# 1 进入项目目录
cd /xx/xx/o2o
# 2 初始化本地git仓库
git init
# 3 在你的项目中设置你在GitHub新建的公开仓库,并命名为 origin
git remote add origin https://github.com/Guoye/o2o.git
# 4 拉取Github仓库上master主分支上的文件
git pull origin master
##########代码提交并推送#################
# 5 把所有的代码加入缓存区 除.gitignore排除外
git add *
# 6 提交代码,并附上消息:"init"
git commit -m "init"
# 7 推送代码到远程仓库 origin 的master主分支上
git push --set-upstream origin master
# 完成
Apache DocumentRoot的Gitolite本地工作副本
如何解决Apache DocumentRoot的Gitolite本地工作副本?
| 我有git和gitolite的系统设置。一切工作正常,除了我希望我的结构像这样: 本地环境->开发服务器->生产服务器 我在开发服务器上安装了一个存储库,并且已成功将其克隆到本地环境中。现在,我需要的是开发服务器上的本地文件系统工作副本,但是我不确定如何使用gitolite做到这一点。git clone /home/gitolote/repositories/myrepo.git
正常工作,直到我尝试推/拉为止,这时我得到了:
remote: ENV GL_RC not set
remote: BEGIN Failed--compilation aborted at hooks/update line 20.
remote: error: hook declined to update refs/heads/master
关于如何用乙醇钠做这件事的任何想法?
解决方法
git clone git@gitoliteserver:myrepo.git
该第二个回购协议将能够在您要开发的服务器上提供“本地文件系统工作副本”的同时,将其推入/拉出gitolite服务器。
,如果需要使用本地协议,则只需将GL_BYPASS_UPDATE_HOOK
环境变量设置为1
:
gorgo@somegitoliteserver:~/testing$ GL_BYPASS_UPDATE_HOOK=1 git push
Counting objects: 3,done.
Delta compression using up to 3 threads.
Compressing objects: 100% (2/2),done.
Writing objects: 100% (2/2),234 bytes,done.
Total 2 (delta 1),reused 0 (delta 0)
Unpacking objects: 100% (2/2),done.
To file:///home/gitolite/repositories/testing.git/
96be337..ab5ca6d master -> master
Centos7 以http方式搭建git服务器 apache+git
用到apache和git
第一步,安装httpd和git
yum install git httpd
第二步,启动httpd服务
systemctl start httpd.service
第三步修改firewalld配置文件和重启firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl restart firewalld.service
第四步,创建git仓库
mkdir -p /opt/http_git/test.git
cd /opt/http_git/test.git
git init --bare
//设置权限
chown -R apache:apache /opt/http_git
第五步,创建账号
// testuser为账户名 可以随意定义
htpasswd -m -c /etc/httpd/conf.d/git-team.htpasswd testuser
// 修改git-team.htpasswd文件的所有者与所属群组
chown apache:apache /etc/httpd/conf.d/git-team.htpasswd
// 设置git-team.htpasswd文件的访问权限
chmod 640 /etc/httpd/conf.d/git-team.htpasswd
第六步,设置apache,使其请求转发到git-cgi:
vi /etc/httpd/conf/httpd.conf
// 在最后一行IncludeOptional conf.d/*.conf的上面添加下面内容:
<VirtualHost *:80>
ServerName 192.168.1.55
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv GIT_PROJECT_ROOT /opt/http_git
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
<Location />
AuthType Basic
AuthName "Git"
AuthUserFile /etc/httpd/conf.d/git-team.htpasswd
Require valid-user
</Location>
</VirtualHost>
///
ServerName是git服务器的域名,这里最后填写你机子的IP
/opt/http_git是代码库存放的文件夹
ScriptAlias是将以/git/开头的访问路径映射至git的CGI程序git-http-backend
AuthUserFile是验证用户帐户的文件
第七步,重启httpd
systemctl restart httpd.service
之后就可以进行clone了
git clone http://server/git/test.git
如何出现push权限被禁止的话,需要关闭selinux
//查看selinux状态
getenforce
//临时关闭selinux
setenforce 0
//永久关闭selinux
vi /etc/sysconfig/selinux
//将SELINUX=enforcing改为SELINUX=disabled
//重启服务器即可
今天的关于通过Apache的gitolite仓库的GitSmartHTTP不允许我推送和git访问不了的分享已经结束,谢谢您的关注,如果想了解更多关于2. github创建 git仓库,克隆,拉取和推送操作(所有的git命令前提是一定在当前项目目录下)、7步把本地Git仓库推送到已新建的Github仓库、Apache DocumentRoot的Gitolite本地工作副本、Centos7 以http方式搭建git服务器 apache+git的相关知识,请在本站进行查询。
本文标签: