0.出发点
由于项目开发的规模和复杂度越来越大,有时候需要同时多人在不同的嵌入式linux上开发代码,在没有用git管理代码和文档前,很难同步代码和文档的版本,宝贵的代码存储也没有安全感。
github虽然也提供代码托管,但在国内访问github网速令人担忧,并且要建立私有化的github软件仓库还需要付费,宝贵的代码存储在别人的服务器上也没有安全感。
正好手上有闲置的树莓派3一块,拿来搭建私有git代码仓库正好,低功耗的树莓派3全天开启当服务器用完全合理。配合办公用的局域网,一下子私有git代码仓库就能用起来,真好。
搭建软硬件环境要求:
硬件:树莓派3系统:ubuntu-mate-16.04所需软件:openssh-server openssh-client python-setuptools git
以下叙述中,git服务器端指树莓派3,git客户端指开发代码的具体机器。
1.git服务器端搭建
(1)树莓派3安装ubuntu-mate-16.04系统
默认大家都已经在树莓派3上安装好了ubuntu-mate-16.04系统,如果没有请参考以下教程自行安装:
ubuntu mate 16.04镜像文件下载地址:https://ubuntu-/download/
安装参考教程:/archives/06/201.html
(2)安装git、ssh等软件
$ sudo apt-get install git openssh-server openssh-client python-setuptools
(3)新增用户(用户名为slamgit),用于运行git服务,回车后会提示输入密码
$ sudo adduser slamgit
(4)初始化git仓库
#切换到slamgit用户$su slamgit#在slamgit家目录新建code目录用于存放git代码仓库数据$mkdir /home/slamgit/code$cd /home/slamgit/code#建立自己的裸仓库,用于给git客户端上传需要托管的代码#加上--bare参数后,服务端是初始化的[裸仓库]一般服务器上的Git仓库都是以.git结尾的裸仓库。#裸仓库没有工作区,因为服务器上的git仓库是为了共享用,不能让用户直接登录到服务器上去修改工作区中的代码,用裸仓库更加安全$ git init --bare test.git
现在服务器上面的git仓库已经初始化完成,git客户端可以向相应的仓库上传需要托管的代码了。
上面是建立了一个叫test.git的裸仓库,只是用于测试。在后面的实际项目中,我们可以继续建立更多的仓库,仓库最好以实际的工程名命名,方便管理,比如:
#建立实际项目的仓库,例如miiboo项目$ git init --bare miiboo.git
(5)测试git服务器搭建是否成功
随便找一台在同一局域网下装有git的电脑,clone刚才创建的test.git仓库
#192.168.0.163为树莓派3的IP地址,根据实际情况进行替换$ git clone slamgit@192.168.0.163:/home/slamgit/code/test.git
如果在git客户端电脑上出现了test这个文件夹,就说明搭建成功了!!!
2.git客户端使用
(1)给实际代码项目初始化git配置
先进入项目文件夹,通过命令 git init 把这个目录变成git可以管理的仓库;如果是clone网上开源的项目,可以先删除项目文件夹下的.git隐藏文件夹,然后再执行git init命令。
#在项目文件夹下,执行$ git init
(2)把项目中的文件添加到本地版本库中
使用命令git add 文件,添加到暂存区里面去,如果后面接小数点“.”,意为添加文件夹下的所有文件。
$ git add .
(3)提交说明commit填写
用命令git commit告诉Git,把文件提交到仓库,引号内为提交说明
$ git commit –m "init a base version,add a first file for push to server"#如果这一步报fatal的错误,需要执行如下命令设置自己的用户名与email,引号内填上自己的名字和email$ git config --global user.name "xxx" $ git config --global user.email "xxx@"
(4)关联到远程仓库
$ git remote add origin 你的远程库地址#例如:#git remote add origin slamgit@192.168.0.163:/home/slamgit/code/test.git#如果上面步骤报错,先删除origin,然后重新添加origin#git remote rm origin#git remote add origin slamgit@192.168.0.163:/home/slamgit/code/test.git
(5)将本地代码推送到远程仓库
#其中origin是远程仓库名字的别名;master是主分支名$ git push origin master
(6)用远程仓库同步本地代码
#获取远程库与本地同步合并,如果远程库不为空必须做这一步,否则后面的提交会失败$ git pull --rebase origin master
3.更多git代码管理操作
(1)版本管理
版本回退
工作区和缓存区
管理修改
撤销修改
删除文件
(2)分支管理
创建与合并分支
解决冲突
分支管理策略
Bug分支
Feature分支
多人协作
(3)标签管理
创建标签
操作标签