# 嵌入式组Git工作流程及操作指南
## 一、版本号定义
项目版本号定义由 x . y . z 三位组成
x:一代产品始终为1
y:发版到用户手中的序号
z:0-49 用来解release分支中的bug用,50-99用来在master分支做需求用
举例1(release 解bug分支版本号 = 1.1.6):
基于发版到用户手中的1.1.0版本release分支,当前解bug的版本为1.1.6
举例2(master 需求主分支版本号 = 1.1.58):
当前做需求的的版本号为1.1.5
## 二、分支定义
master分支:在该分支上开发新的需求。
注:该分支上的版本号1.y.z 中z只能为50-99
release_1_y_0分支:当新开发的需求满足当期开发任务时,需要拉出一个release分支,分支根据上面的版本号定义命名,例如:release_1_1_0,release_1_2_0...等。后期就需要在该分支上进行测试和Bug修复,直到稳定发版,最后合入master分支。
注:该分支上的版本号1.y.z 中z只能为0-49
feature_xxx分支:当需要开发某个大型需求,周期较长时,需要基于master分支再单独拉一个分支开发,待稳定后合入master分支。
## 三、Git开发习惯约束
1,为了尽量避免多人开发时合代码引起的风险,在相应的分支开发时需定时和远端git 仓库同步,可采用fetch+rebase(或pull)方式。
2,善于利用.gitignore文件,屏蔽由IDE工作产生的临时文件,原则上git仓库只跟踪源代码文件。
3,尽量使用git命令行方式,避免使用GUI客户端。
## 四、Git开发操作指南
(1)配置你的git账号信息
git config --global user.name "zhangqiang"
git config -global user.email "ucos_hqu@126.com"
(2)查看配置信息
git config --global --list
(3)为远端仓库生成ssh公钥
ssh-keygen -t rsa -C "zhangqiang" //生成密钥文件
cat ~/.ssh/id_rsa.pub //将输出的密钥内容复制到远端仓库中即可
(4)如果远端已有仓库,克隆到本地
git clone git@code.aliyun.com:zhangqiang/example.git
(5)如果远端没有仓库,需要在本地建立仓库并同步至远端
1,首先在远端建立一个仓库,例如仓库地址为:
git@code.aliyun.com:zhangqiang.qiang/test.git
2,在本地做如下操作:
git init
git remote add origin git@code.aliyun.com:zhangqiang.qiang/test.git
git add .
git commit -am "message"
git push -u origin master
(6)在本地建立分支A,并在远端也建立分支A
git checkout -b fenzhi-A
git push -u origin fenzhi-A
(7)删除本地分支和远端分支
git branch -d fenzhi-A //删除本地分支
git push origin --delete fenzhi-A //删除远端分支
(8)从远端获取一个本地不存在的分支
git fetch
git checkout -b fenzhi-A origin/fenzhi-A
或
git pull origin fenzhi-A:fenzhi-A
或
git checkout --track origin/fenzhi-A
(9)回退
git reset --hard HEAD^ //回退到上个版本的commit,并删除当前的commit
git reset --hard HEAD~3 // 回退到前3次提交之前,以此类推,回退到n次提交之前
git reset --hard commit_id // 退到/进到 指定commit的sha码
git push origin HEAD --force //强推到远程
(10)tag命令
git tag //查看tag
git tag test_tag c80f83939a89659e51dc2a5fe183af384233 //在某个commit 上打tag
git push origin test_tag //本地tag推送到线上
git tag -d test_tag //本地删除tag
(11)切换到分支A开发,并及时和远端同步分支A上新的动态
git checkout fenzhi-A
git fetch
git rebase
(12)配置beyond compare为git的diff和merge工具
找到.gitconfig文件,并加入相应内容即可,具体操作如下图:
在.gitconfig文件中添加红色方框内的配置信息,配置信息中需根据你电脑上安装的beyond compare路径以及bc版本(1~4)来修改。
(13)使用beyond compare进行diff
比较两次commit的区别
git difftool --dir-diff b2c15be1f4e6dd0379a617b452
git difftool --dir-diff head
(14)使用beyond compare进行merge
当merge遇到冲突时可执行git mergetool命令进行解冲突
(15)提交工作区中的改动到缓存区中
git add file_name 或 git add .
(16)commit缓存区中的修改
git co8ed007cf218a82 62e30196e868bc84b1d3a1569dc127fb9fc13e84
比较上一次的提交和当前工作区的区别mmit -m “提交信息”
(17)修改上次commit的备注信息
git commit --amend -m " new text"
(18)查看本地分支所追踪的远端分支
git branch -vv
(19)当需要切换到其他分支开发但本地工作区和缓存区还未commit时
git stash //保存工作区和缓存区的内容到堆栈中
git stash pop //当回到该分支时可用该命令恢复之前的工作
(20)如果想切换到之前提交的某个commit id版本去
git checkout commit_id
例:git checkout e0a0ad92215299de14b23197c04e5f570977db89
注意:如果需从当前分支某一个commit开始创建新分支,需加上新分支名字,如下:
git checkout commit_id -b NewBranchName