原创 虚拟机搭建Git服务器,实现两台虚拟机协同开发

2014-11-7 00:03 2911 15 15 分类: 软件与OS

尝试了在一台主机上的两台虚拟机(一台CentOs,一台WinXp)使用Git版本控制协同开发。其中由CentOS作为Git服务器,则我现在相当于有两名开发者,一名使用WinXP那台机器,一名使用Linux这台。

一、准备工作:

1、Git工具:forboth of these two virtual machines

2、确保两台虚拟机可以互相ping通(都与主机使用NAT模式)

3、ssh支持(稍后详细介绍)

 


 

二、在Linux上架设Git服务器(使用authorized_key方式,适合小型开发团队)

1、当前用户为abc,在Linux上新建一个账户(我取名为git,该账户作为Git服务器的管理员账户),在git的~目录下建立.ssh文件夹,即~/.ssh 。

 
以下是代码片段:
abc@abc-pc $ sudo adduser git
abc@abc-pc $ sudo passwd git
abc@abc-pc $ su git
git@abc-pc $ cd
git@abc-pc $ mkdir .ssh
 

2、创建公钥(若没有),并在git账户中授权   

   1).回到abc账户,查看是否有~/.ssh文件夹及其中的*rsa.pub及rsa文件对,若没有,则需要创建公钥2、创建公钥(若没有),并在git账户中授权

 

 
以下是代码片段:
abc@abc-pc $ cd ~/.ssh
abc@abc-pc $ ls -a
 

   2).创建~/.ssh文件夹

以下是代码片段:
abc@abc-pc $ mkdir -p ~/.ssh

 

   3).生成公钥,在.ssh文件夹中即生成了文件id_rsa和id_rsa.pub,将.pub文件复制到git用户下的任意目录(~/tmp)

 

以下是代码片段:
abc@abc-pc $ ssh-keygen -t rsa -C "your_email@example.com"

   4).进入git账户,将刚刚复制过来的abc用户的公钥的内容追加到authorized_key尾部即可

 
以下是代码片段:
abc@abc-pc $ su git
git@abc-pc $ cat ~/tmp/id_rsa.pub >> ~/.ssh/authorized_key

3、在服务器上部署项目

   1).在git账户下创建想要存放开发项目的目录(~/opt/git),一般以.git结尾,然后创建一个裸仓库作为项目远程仓库,即完成了Git服务器的构建

 

以下是代码片段:
git@abc-pc $ mkdir -p ~/opt/git/ait_builder.git
git@abc-pc $ cd ~/opt/git/ait_builder.git
git@abc-pc $ git init --bare --shared

   2).这时,只要对这个仓库目录有ssh访问权限的用户都可以对该仓库进行相应权限的操作了(以上用--shared给项目文件夹自动赋予写权限),如推送和拉取分支,以下是一些例子

以下是代码片段:
abc@abc-pc $ cd ~/projects/ait_builder
abc@abc-pc $ git init
abc@abc-pc $ git add .
abc@abc-pc $ git commit -m "Initial Commit"
abc@abc-pc $ git remote add ait_builder_repertory git@abc-pc:~/opt/git/ait_builder.git
abc@abc-pc $ git push ait_builder_repertory master
 

 

   今后每次建立新项目,只要用此方法在git用户下完成项目部署,之后就不用再去管它了。

 

三、两台虚拟机间通信测试

1、为WinXP装好git工具(当然此时你的Linux上已经安装好了git)

2、打开windows的命令提示符cmd,ping一下Linux机器的ip(在Linux下使用ifconfig命令查看)

3、在Linux terminal中ping一下WinXP机器的ip(在windows下使用ipconfig命令查看)

4、在windows中打开git bash工具,用内带的ssh工具连接git@[linux-ip](一般为git@192.168...)

5、若以上都是通的,即可确认两者之间通信没有大问题

 


 

四、Linux客户机构建本地仓库,并使用远程仓库

现在,就可以在Linux(服务器本机,abc用户)上创建项目并推送第一个分支到远程仓库(git用户)中去

1、首次使用git,需要进行的最简单的配置(--system选项对所有用户都生效,--global选项只对当前用户生效)

 

以下是代码片段:
abc@abc-pc $ git config --system user.name "abc"
abc@abc-pc $ git config --system user.email abc@xxx.xxx

 

2、创建项目的本地git仓库,只要在目标目录下执行git init命令

 

以下是代码片段:
abc@abc-pc $ cd ~/projects/ait_builder
abc@abc-pc $ git init

3、编辑忽略列表,即创建.gitignore文件,只要按照规定的格式去编辑,即可使git忽略相应的文件或目录,达到使一些不需要被跟踪的文件或目录(如编译过程中生成的.o文件等)被忽略的目的,以下是一个基本的例子

 

以下是代码片段:
#############################################
#
#.gitignore file for project "ait_builder"
#
#############################################

#ignore doxygen folders and config files

/html
/latex
*.dox

#ignore .eps and .dot

*.eps
*.dot

#ignore executable files

_*

#ignore useless source codes

/*.cpp
/*.h

#ignore output files during compilation

output/

#ignore codeblocks project files

*.cbp

4、添加文件到暂存区(假设你已经在ait_builder目录下部署好了你的程序文件)执行git add .命令会将当前目录下的所有不在忽略列表中的文件都添加到git的跟踪目标中(当然也可以根据需要添加指定的文件或目录)

 

以下是代码片段:
abc@abc-pc $ git add .

 

5、将暂存区的变更提交到git本地仓库

以下是代码片段:
abc@abc-pc $ git commit -m "My first Commit"
6、远程仓库的基本操作

 

   1). 添加远程仓库,用git remote add [remote server shortname] [server URL] 命令添加一个远程仓库

以下是代码片段:
abc@abc-pc $ git remote add ait_builder_repertory git@abc-pc:~/opt/git/ait_builder.git

 

   2). 查看所有远程仓库的shortname,git remote命令

以下是代码片段:
abc@abc-pc $ git remote

 

   3). 查看远程仓库的shortname及URL

以下是代码片段:
abc@abc-pc $ git remote -v
   4). 查看远程仓库的详细信息
以下是代码片段:
abc@abc-pc $ git remote show ait_builder_repertory
7、推送和抓取分支

 

   1). 推送第一个分支(这里是默认分支master)到远程仓库,使用git push [remote server shortname] [branchname]

以下是代码片段:
abc@abc-pc $ git push ait_builder_repertory master
   2). 从远程仓库抓取分支,使用git fetch [remote server shortname]有一点很重要,需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。
以下是代码片段:
abc@abc-pc $ git fetch ait_builder_repertory

     或使用git pull [remote server shortname]命令直接抓取并合并分支到当前工作分支

以下是代码片段:
abc@abc-pc $ git pull ait_builder_repertory

 


 

五、WinXP客户机构建本地仓库,并使用远程仓库

实际上,在WinXP下安装好git工具之后,若使用命令行进行git操作,其方法与在Linux下是完全相同的(当然也可以选择使用git gui,但是不要忘记用过Linux下git的你已经会使用命令行完成同样的工作了,何必再费事学习gui工具呢)。需要注意的是也要用同样的方式生成公钥,并加入到git@abc-pc的授权表中,即authorized_key。

值得注意的是:

6、远程仓库的基本操作

此处在添加远程仓库时应当注意,远程主机的URL将不能再写成git@abc-pc:~/opt/git/ait_builder.git,而应以其IP地址代替主机名

以下是代码片段:
abc@abc-pc $ git remote add ait_builder_repertory git@192.168...:~/opt/git/ait_builder.git

 

 


 

总结:

之前在工作时只是使用过git进行分支的拉取和推送,并未真正了解过整个git项目的部署的详细流程以及git服务器的架设方法。所以经过对git官方的documentation进行研究整理并根据自己的实际操作,将架设一个简单的git服务器并用两台不同操作系统的虚拟机进行写作开发的过程记录在本文当中。

由于初次尝试,因此步骤写的比较详尽,记录的一些操作也只是最基础的操作,例如对于分支的详细操作就不在本文的写作范围内。当然,可能在本文记录的过程中可能也会存在一些错误,希望感兴趣的童鞋能讨论指正。

git

文章评论0条评论)

登录后参与讨论
我要评论
0
15
关闭 站长推荐上一条 /2 下一条