前言:如果你使用git管理代码(不希望公开的),但是没有钱买github的服务,你可以再自己的服务器上搭建git服务器(这里只写支持ssh协议的,与github差的太远了,希望不要怪我这个标题党)。同时如果你用git部署项目的话,只需要一条pull命令就可以把测试机上的代码更新到线上(之前我还傻傻的登录线上机子然后pull,其实只需要在本地push一下就好)。
参考资料:《git权威指南》
http://www.ooso.net/archives/596
-.搭建支持ssh协议的git服务器
1:linux服务器上安装好git(可以参考:http://help.github.com/linux-set-up-git/)
2:本地安装git软件(参考:http://help.github.com 里面的set up git)
3:给支持git操作的用户添加认证信息,在用户家目录(~/home)新建.ssh文件夹:将本地(就你开发机子上的~/.ssh/id_rsa.pub)添加到服务器上~/.ssh/authorized_keys
4:在linux服务器上创建项目的共享版本库(git init --bare --share;git update-server-info)
5:然后你就可以使用了,操作跟你操作github一样( git clone 添加了认证信息的用户名@服务器域名(或者ip):/项目路径)
二.git部署你的项目
1:.在你部署的机子上通过git clone把版本库中的代码克隆一份
2:设置部署机上的项目git配置
git config receive.denyCurrentBranch ignore
git config --bool receive.denyNonFastForwards false
cd .git/hooks
wget http://utsl.gen.nz/git/post-update
chmod +x post-update
3:设置你本地版本库
[remote "web"]
url = your-ssh-username@your-host:/var/www/yoursite/
4:然后你就可以
git psuh origin master(更新到版本库)
git push web(更新到线上)
如果你有这个需求,同时我这篇文章误导你了(没看明白我写啥,可以email我)。
--------------------------------华丽的分界线(以下部分是之前的自己的备忘录)---------------------------------------------
我们知道git支持很多协议,这里想说的是本地和ssh。
本地就是你的代码库分别在两个盘:
在d盘的test目录生成不包含工作区的版本库
d:/test/ git init --bare
然后在e盘就可以用了
e: git clone d:/test
...
e:/test git push oringin master
在网络中就是通过ssh连接到你的服务器:
在你的服务器建立git用户:
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh
然后你自己的本地的~/.ssh/id_rsa.pub添加到服务器上~/.ssh/authorized_keys
然后用git用户创建版本库
cd /var/www/gitcode/test
git init --bare --share
git update-server-info
然后你本地就可以使用了
$ git clone git@youserver:/var/www/gitcode/test
....
$ git push origin master
然后你就可以尽情使用git了。
最后再次感谢github管理员在大过年的帮我解决问题(昨晚平安夜发的问题)。
还有这个http://progit.org/,你可以学习很多git知识。
git部署站点:
上面说到搭建git没有工作区间的版本库,当我们需要部署该代码时候。(比如web服务器也在git版本库管理机子上)
cd /var/www/test
git clone /var/www/gitcode/test
web服务器就省略了...
也许我们是本地开发,我们本地有个版本,修改完了git push origin master
然后在登陆到web服务器下面git pull,才实现代码一致,我想可能有简单办法,自己对git不熟悉,刚好看到这篇文章。http://www.ooso.net/archives/596
在web部署的库中:
git config receive.denyCurrentBranch ignore
git config --bool receive.denyNonFastForwards false
给web下面的代码加上git用户可写的权限,
cd .git/hooks
wget http://utsl.gen.nz/git/post-update
chmod +x post-update
在本地库加上
[remote "webdev"]
url = your-ssh-username@your-host:/var/www/yoursite/
然后你就可以
git psuh origin master
git push webdev
省去了在登陆web服务器pull的步骤。
这么强大的git了这是值得学习。
[注]:大部分的git push失败都是有权限导致的,当push失败(除冲突除外),先去检查权限问题。
分享到:
相关推荐
Github使用教程,搭建公司自己用的linux git服务器,在github上发布自己的简历.zip
完全学会GIT+GITHUB+GIT+SERVER的24堂课喜欢的评个好评 谢谢
github-git-cheat-sheet Git手册github-git-cheat-sheet Git手册
完全学会Git、GitHub、Git Server的24堂课
github-git-cheat-sheet (官方文档汉化版)
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。也是就是CVS的接班人!
个人github、git学习笔记。包含Github和git的基础命令和介绍。由于网络问题在国外很难插入图片,把源文件的pdf导出版本进行上传。
Jenkins+Git+github 自动化部署
使用github以及git共享代码的方法,和命令详解,来自官方
Git与Github教程详细介绍了Git的工作机制,Git命令行的基础学习,Git-Eclipse和Nginx的准备工作,Git与Github分支体系,Git与Github的远程和本地工作原理,Git与Github克隆实战和最后的课程精华总结部分,可以帮助...
开源项目-github-git-lfs.zip,git大文件存储是用go编写的
Git代码托管工具,以及GitHub的使用,包括怎么将Eclipse的程序上传github上
使用 GitZip for github 工具下载单个文件由于 Github 的特点,我们在下载 Github 仓库中的文件时往往需要下载整个仓库的文件,这个特
gitHub 以及 Git 初次使用
本地git统计信息包括类似GitHub的贡献日历
52 ## create you github server 53 1. create git user,group 54 ```bash 55 useradd -g -M git 56 groupadd git 57 passwd git
git,git与IDEA,git与github,git与gitee相关操作小结
完全学会git github gitserver的24堂课。介绍仓库git的操作和知识
远程版本库和GitHub【Git和GitHub教程4】