参考:
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. 安装 gitssh 等软件
$ 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. 标签管理
创建标签
操作标签
来源: http://www.bubuko.com/infodetail-2503104.html