您的位置:首页 > 其它

搭建ubuntu上的git服务器,并用Mac下用Xcode连接进行开发

2013-04-15 14:23 239 查看
在晚上搜来搜去,搞了好久,终于搞定了。各种问题都是大家以前遇到过的,没什么特别的。需要感慨一下的是:真的需要静下心来好好看完【教程/指导书】再动手阿。因为常常都是遇到问题回去查资料才发现是自己看漏了或者理解错误了。配置环境这件事就是你越着急,它就越不给你成功。反复试过之后总结到:理解清楚每个命令的真正含义,程序工作的内部流程,才能知己知彼,百战不殆阿!
第一、【搭建ubuntu上的git服务器】:这个主要是参考了这样一篇文章:/article/5603553.html
不过上面有些写得不太清楚,我就按照自己的理解重写一遍吧。去除一些可以不必要的步骤,同时把原文一些没解释清楚的解释清楚。
【对使用git的程序员工作方式的解释】
在硬件上,我们基于这样一个工作情况:我们有一台【git服务器】(就是一台电脑拉),专门用来管理源码。然后我们几个开发人员在各自不同的【客户机】上进行合作开发,并时不时的把自己的修改后的源码上传到【git服务器】上面统一管理。
【搭建git服务器需要什么硬件呢?】
一台ubuntu电脑,我的是10.04的桌面版~
下面按照步骤进行叙述拉:
1.创建一个名叫git的新用户来专门管理git服务器:
sudo uderadd -m git                           //这里-m的意思是创建用户的时候同时创建家目录和邮件目录
sudo passwd git                                  //为git用户创建密码
(git这个名称是ubuntu的保留字。和你自己给自己取的用户名是不同的哈。一旦创建了git这个用户名,就代表这个用户要管理git服务器。所以你看,当你用su git命令转换账户的时候。终端上出现的提示符都和你原来的提示符不相同哦!默认没有bash补全这种好用的东西!唉。)
(原文中说还要创建一个目录用作git仓库,我觉得是没有必要的。创建了相反会混淆,所以直接在git家目录下生成git仓库吧!稍候会介绍怎么生成git仓库。)
2.在ubuntu电脑上安装git和openssh。直接sudo apt-get install git-core openssh-server openssh-client就行啦。到此为止,我们git程序已经安装好了。我们已经可以使用类似"git clone"这样的命令向远端请求respositories(git仓库)。稍候我们会看到,我们正是食用git clone来下载git的管理工具gitosis的。
在下载gitosis之前,我们先来初始化以下git用户:
git config --global user.name "myname"
git config --global user.email "myname@gmail.com"
以后每次提交commit的时候,这两条信息都会随着提交而传到服务器上。标记每次提交是谁提交的,该如何联系他。这个文件会写在"~/.gitconfig"文件中,你也可以稍候修改它。
3.安装配置gitosis。gitosis是可以方便管理git服务起的工具。首先安装python的setuptool,因为安装gitosis的时候需要这个工具。
sudo apt-get install python-setuptools
接下来,我们要安装gitosis了哈。前文提到,我们要用git clone来请求gitosis的仓库。
首先,我们进入到/tmp目录。(这是ubuntu的临时目录~下次开机,里面暂存的东西都会没有的哈,所以我们把gitosis的安装文件下载在这里,安装后就抛弃它吧。咯咯咯~哇,我想起野口了!)
在/tmp目录下,我们执行:
git clone git://eagain.net/gitosis.git
这样,我们就把这个gitosis的安装文件下载下来啦。进入到gitosis目录下。执行:
sudo python setup.py install
这样就安装完毕gitosis了!
4.安装完毕gitosis。我们的ubuntu服务器上(其实就是台pc)就具备了git的全部功能了哈。(看过git介绍的都知道,git没有服务器和客户机的概念,每台服务器都是客户机,每台客户机都是服务器。那我们为什么还要城称呼这台pc叫服务器呢,因为我们是开发ios程序阿,不会在ubuntu上开发的。只是用ubuntu来进行源代码控制,所以这台ubuntu电脑就被我们赋予了做服务器的使命。因此称之为【git服务器】)
我们建好了【git服务器】,现在需要一个用户来管理这个服务器。你可能会说,阿,git这个用户就可以管理阿。但是,我们一般不会直接操作【git服务器】本尊,因为它有可能放在遥远的地方,比如锁起来的机房之类。那我们怎么管理【git服务器】呢。
答案就是:我们可以在【客户机】上管理【git服务器】!
首先,让我们和【git服务器】这台pc说拜拜。我们现在要切换到【客户机】上进行工作啦。我们的客户机可是Mac pro电脑哦。让我暂时给他取名叫做【小pro】吧。我们在【小pro】上键入:(一般在家目录下)
ssh-keygen -t rsa
然后一路回车。这时候,就在家目录下生成了一个“.ssh”文件夹,隐藏的哦!这条命令是说【小pro】,帮我生成一对“公钥和私钥”,其中私钥就放在【小pro】上,而公钥我们要拿到【git服务器】上。以便【git服务器】承认【小pro】可以作为它的管理员哈!就像一块玉分成两半,你一半我一半做定情信物一样!哈哈。
在【小pro】可以ping通【git服务器】的前提下,我们采用:
scp .ssh/id_rsa.pub git@<server's ip>:/tmp
要把<server's ip>换成类似:172.16.23.85这样的ip哈。
成功之后。让我们回到【git服务器】上。额,我们也给【git服务器】取个名字叫【小git】吧。还有以后我不打【】了哈,好麻烦。
5.下面我们要开始把传到小git上的公钥加入到git管理名单中了哈。如下:
sudo chmod a+r /tmp/id_rsa.pub
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
这样,git在/home/git/目录下就生成了文件夹【gitosis】【repostories】。【repositories】就是git的仓库文件夹!包括可以更改git的配置文件也放在这个仓库文件夹里面叫做“gitosis-admin.git”。
我们先创建root账户:su passwd root
然后登录root账户:su root
接着把某个文件该为可读可执行,这样才能从远端管理git配置哈。
命令为: sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
6.至此我可以通过小pro来配置小git了。不过趁现在我们还在小git上,让我们先新建一个测试项目的仓库把。
如下:
su git                                                //切换为git账户,不要以为我们创建了这个账户没有用的哈。
cd /home/git/repositories
mkdir infoboard-ios.git
git init --bare                                    //--bare是用来初始化一个空文件夹为git仓库
7.好,现在我们可以回到小pro上了。在你希望放置git配置仓库的目录下输入:
git clone git@<server>:gitosis-admin.git
cd gitosis-admin.git
该目录下的keydir目录是用来存放所有需要访问git服务器的用户的ssh公钥。你现在会看到里面只有一个pub文件,它就是你的ssh公钥。假设它叫做"小范的小pro.pub"。
为了把其他用户也加入到git项目开发的权限名单中。需要各个用户按照前面提到的办法生成各自的ssh公钥文件后,把所有人的 ssh公钥文件都拿来,按名字命名一下,比如“小明.pub”, “小红.pub“等,统统拷贝到keydir下。
同时,打开此目录下的gitosis.conf,多半它都是像这样:
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = 小范的小pro
其中“小范的小pro“就是之前keydir文件中pub文件舍去了后缀剩下的名字。
假如你考过来小明的pub文件,你先把它从"id_rsa.pub"改名为"小明.pub",然后考入keydir中,同时修改gitosis.conf,修改为如下:
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = 小范的小pro 小明
就ok了。
如果你要让小范和小明同时管理infoboard-ios.git这个仓库。那么配置文件应该改为:
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = 小范的小pro 小明
[group infoboard-ios]
writable = infoboard-ios
members = 小范的小pro 小明
这样就ok拉。如果要让某人只能读,那么要把writable修改为readonly。
当然目前这些配置文件的修改只是在你的本地,你必须推送到远程的gitserver上才能真正生效。
加入新文件、提交并push到git服务器:
首先保证你在gitosis-admin.git目录下。然后,
git add .
git commit -am “你希望添加的批注”
git push git@<gitserver>:gitosis-admin.git
上传成功后,你设定的那些用户就都能访问git仓库啦。
8.添加已有的infoboard-ios项目放在/home/infoboard-ios/中。首先,你先进入到这个项目的目录中。
git init
git add .
git commit -am “initial version”
git push git@<gitserver>:infoboard-ios.git
注意,这里infoboard-ios.git仓库必须要先在服务器端创建好哦,不然是push不上去的。
9.使用xcode4从git仓库中签出项目进行开发。
打开xode4,选择connect to a repository



然后填上服务器通讯地址:
这里的gitserver是我在/etc/hosts为ip地址添加的别名。添加的代码如下:
172.16.23.85        gitserver



然后接下来就很简单了。多亏了Xcode内置了git,使得版本控制变得如此简单。后记:
其他还有一些内容请自行参考原文。另外有一些小tips:
1.u盘插上Mac后,默认挂载在/Volumes/目录下
2.重启ssh服务:sudo /etc/init.d/ssh restart
或者 sudo service ssh restart
3.可制定远程服务器仓库简称:
比如在使用了 git remote add infoboard git@gitserver:infoboard-ios.git后
可以使用 git push  infoboard 直接把infoboard.git仓库push上服务器
删除远程服务器简称:git remote rm infoboard
4.在使用scp .ssh/id_rsa.pub git@gitserver:/tmp的时候出现:
permission denied(publickey)
则在服务器端修改 /etc/ssh/sshd_config 中的PasswordAuthentication 从no改为yes
然后重启ssh
在sshd_config这个文件中还可以设定很多ssh的参数
5.在ubuntu中,让终端只显示当前目录名称:
修改 ~/.bashrc
把 if["$color_prompt"=yes];then···后面的小写w改为大写W。
6.桌面版的ubuntu是没有apache2的,用apt-get install可以安装
7.在Mac OS中,有非常方便的截屏快捷键:
Command-Shift-3: 对整个屏幕截屏,图片会保存的一个文件中(默认保存的桌面上)
Command-Ctrl-Shift-3: 对整个屏幕截屏,图片被保存到剪贴板(夹纸板)中。
Command-Shift-4: 对选定区域进行截屏,并将图片保存到文件中(默认保存的桌面上)。在触发这个快捷键后,按空格(Space)键,可以对一整个窗口或菜单进行截屏。
Command-Ctrl-Shift-4: 对选定区域进行截屏,图片被保存到剪贴板(夹纸板)中。
这些快捷键都是系统的默认设置。我们可以对这些快捷键进行修改。进入“系统偏好设置” -> “鼠标与键盘” -> “快捷键”,在“屏幕快照”部分进行修改就可以了。
8.重置上一次提交的commit:git reset --hard HEAD~1
重置后,上一次提交的commit就会消失,不过这样重置后在push,可能会出问题。
9.第一次把项目推送到服务器的步骤:
1)在服务器端用git账户mkdir创建一个项目目录名:xxx.git
2)进入到此目录,执行git init --bare:创建一个空仓库
3)在有权限的客户机,通过pull gitosis-admin.git,并修改它,再push来创建使用者的权限,要修改giosis-admin.conf和keydir目录下面的密钥
4)进入到客户机项目目录,删掉之前所有的项目仓库,即.git等隐藏文件。然后执行:git init和git add .和git commit -am “xxx”,之后再使用【git push git@gitserver:infoboard-hd.git master】,注意,第一次push一定要加master制定这个是主分支。
参考:http://www.newsmth.net/pc/pccon.php?id=10003915&nid=433174&pid=0&tag=0
转载:http://fanguoheng.42qu.com/po/blog/10496087
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: