Git服务器搭建与使用教程
参考:
1.廖雪峰的官方网站(很系统的git教程)
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
2. https://www.linuxidc.com/Linux/2017-01/139457.htm
3. http://blog.csdn.net/sinat_33366020/article/details/73732769
由于项目开发的规模和复杂度越来越大,有时候需要同时多人在不同的嵌入式linux上开发代码,在没有用git管理时的解决办法:
(1)手动将嵌入式linux上的工程代码压包拷贝到本地电脑进行编辑,然后将改好的代码再拷贝回去解压;
(2)用ssh远程登录到嵌入式linux,在线编辑代码。
缺点总结:
拷贝压缩包的方法很不方便,往往在嵌入式linux和本地电脑上留下很多中间压缩包,有时候都不记得改动过的地方对应哪个压缩包了,很不利于代码版本管理与数据备份;ssh远程登录在线编辑代码的方法很不稳定,一旦网络不稳定,编辑立马中断,恢复起来很麻烦,同时要编辑多个文件时就更不方便了;于是痛定思痛,必须得把git代码版本管理工具用起来,培养规范、标准化的开发素养。教程内容分为两部分:git服务器搭建,git客户端使用。
一、git服务器搭建
手里刚好有一块闲置的树莓派3,于是准备在上边搭建git服务器,git服务器的软硬件环境如下:
硬件:树莓派3
系统:ubuntu-mate-16.04
所需软件:openssh-server openssh-client python-setuptools git
1.树莓派3安装ubuntu-mate-16.04系统
默认大家都已经在树莓派3上安装好了ubuntu-mate-16.04系统,如果没有请参考以下教程自行安装:
ubuntu mate 16.04镜像文件下载地址:https://ubuntu-mate.org/download/
安装参考教程:http://www.ncnynl.com/archives/201606/201.html
2.安装git、ssh等软件
$ sudo apt-get install git openssh-server openssh-client python-setuptools
3.新增用户(用户名为slamgit),用于运行git服务,回车后会提示输入密码
$ sudo adduser slamgit
4. 初始化git仓库
$ mkdir /home/slamgit/code #这个目录用于专门存放代码
$ cd /home/slamgit/code
$ git init --bare test.git #注意:加上--bare参数后,服务端是初始化的[裸仓库]一般服务器上的Git仓库都是以.git结尾的裸仓库。
裸仓库没有工作区,因为服务器上的git仓库是为了共享用,不能让用户直接登录到服务器上去修改工作区中的代码,用裸仓库更加安全
现在服务器上面的git仓库已经初始化完成,那接下来配置哪些用户可以登录到git服务器,进行git相关操作。
5.git服务器用户登录的配置
去需要登录的git客户端电脑上,生成公钥:
$ ssh-keygen -t rsa
$ cd ~/.ssh/
$ scp id_rsa.pub slamgit@192.168.2.219:/home/slamgit/ #将公钥远程拷贝到git服务器
继续回到git服务器上:
$ cd /home/slamgit/
$ mkdir .ssh
$ cat id_rsa.pub >> .ssh/authorized_keys #将远程拷贝过来的公钥添加到认证文件中
$ chown -R slamgit:slamgit /home/slamgit #修改所有者为slamgit用户
#修改以下目录权限
$ chmod 755 /home/slamgit
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
#修改ssh配置文件/etc/ssh/sshd_config,取消这行 AuthorizedKeysFile %h/.ssh/authorized_keys 前面的注释
#重启ssh
$ sudo service ssh restart
#为了安全禁止git用户shell登录,需要修改/etc/passwd
将git:x:1001:1001:,,,:/home/git:/bin/bash
改为git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
6.测试git服务器搭建是否成功
去git客户端电脑上,clone刚才创建的test.git
$ git clone slamgit@192.168.2.219:/home/slamgit/code/test.git
如果在git客户端电脑上出现了test这个文件夹,就说明搭建成功了!!!
二、将本地文件上传到git服务器
在git客户端电脑上:
$ mkdir test.git
$ cd test.git
$ git init
$ echo "this is a test text file,will push to server" > hello.txt
$ git add .
$ git commit -m "init a base version,add a first file for push to server"
$ git remote add origin slamgit@192.168.2.219:/home/slamgit/code/test.git
$ git push origin master
1.(先进入项目文件夹)通过命令 gitinit 把这个目录变成git可以管理的仓库
$ git init
2.把文件添加到本地版本库中,使用命令git add 文件;添加到暂存区里面去,如果后面接小数点“.”,意为添加文件夹下的所有文件
$ git add .
3.用命令git commit告诉Git,把文件提交到仓库,引号内为提交说明
$ git commit –m "init a base version,add a first file for push to server"
这一步会报fatal的错误,需要执行如下命令设置自己的用户名与email:
$ git config --global user.name "zhang **"
$ git config --global user.email "******@163.com"
4.关联到远程库
$ git remote add origin 你的远程库地址
如:git remote add origin git@192.168.31.130:/srv/sample.git
如果上面步骤写错了:则
git remote rm origin //删除origin
git remote add origin git@git.oschina.net:yourname/demo.git //重新添加origin
5.获取远程库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败)
$ git pull --rebase origin master
6.将最新的修改推送到远程仓库
$ gitpush -u origin master #其中origin:远程仓库名字;master:分支
三、下一步的工作
继续学习git的高级功能:
1.版本管理
版本回退
工作区和缓存区
管理修改
撤销修改
删除文件
2.分支管理
创建与合并分支
解决冲突
分支管理策略
Bug分支
Feature分支
多人协作
3.标签管理
创建标签
操作标签