一、MacOS/Linux用户
1.生成密钥(-C 后建议填写自己的邮箱,便于识别公钥是谁的。建议创建时不要添加密码,连敲三次enter键即可)
$ ssh-keygen -t rsa -C "798959000@qq.com"
2.从 ~/xxx/.ssh 获取生成的公钥 id_rsa.pub,提交给管理员,建议提交时直接命名为:自己的名字.pub(如:lovelywolf.pub 或 lovelywolf-mbp.pub)。
另外,对于同一个用户,需要在自己多台PC上使用GIT,是可以将某台电脑上生成的私钥导入其他电脑相同位置使用的,这样避免为同一个人配置多个证书,增加管理成本。
3.配置客户端用户名和邮件(便于服务器识别,名字和邮箱设置为自己的)
$ git config --global user.name lovelywolf
$ git config --global user.email 798959000@qq.com
4.克隆代码
$ git clone git@123.123.123.123:/data/qinjiakonggu 常用本地指令
$ git status
$ git add .
$ git commit -m "comment for each commit"
$ git pull
$ git push origin master
6.推送到远程仓库指定分支
$ git push 10.254.33.3 local_branch_name:remote_branch_name
二、GUI客户端
GIT客户端众多,例如:
a)
SourceTree(https://www.sourcetreeapp.com/)
b) Git for Windows(https://git-for-windows.github.io/)
c) TortoiseGit(https://tortoisegit.org/)当然,也可以直接玩命令行
1.使用SourceTree(https://www.sourcetreeapp.com/),有MacOS/Windows版可供选择
a)安装
b)注册id并登陆
c)主界面:新仓库 -> 从URL克隆 -> 源URL:
d)用户名和邮件,填写在偏好设置中
2.Windows用户需安装Git for Windows,进入git bash,
命令:ssh-keygen -t rsa -C "wolf@798959000.com.cn" 生成密钥。
然后id_rsa和id_rsa.pub要放到C:\Documents and Settings\Administrator\.ssh\ 目录下
3.SourceTree 安装文件位于33.1/software/配置管理/git 目录
4.如安装TortoiseGit,建议在安装配置时选择 openssh 作为ssh组件
三、GIT使用原则
1.GIT的出生就没有考虑在一个GIT数据库中设置分支目录访问权限的设计,因此我们也不想折腾山寨的权限控制方法。
2.各项目的子系统项目建议单独创建GIT数据库(如:Android一个,iOS一个,Web一个,Doc一个),分开进行轻量化管理,对于单个GIT数据库可以设置读写权限和只读权限。
3.各开发团队如果有开新项目的需求,只需提交给配置管理员(也就是我:周平)项目名(英文的),同时告诉配置管理员访问者名字(前提是之前那个人已经提交ssh公钥给管理员过,没有则需该用户提交公钥)。
4.GIT管理不再依赖于用户密码概念。每一个用户都需在本机生成ssh钥匙对,本地保存密钥,公钥提交到服务器,服务器便唯一识别GIT访问者身份。要妥善保存本地密钥,如果更换电脑或无法找回本地密钥,需要重新生成新的密钥,并提交对应的公钥给配置管理员。
四、项目经理创建数据库
步骤:
1.项目经理与配置管理员沟通,完成GIT数据库权限设置。
2.项目经理在本机创建GIT数据库,并维护代码。
3.项目经理PUSH数据库到服务器。
4.项目成员在本机操作从服务器克隆数据库,开始开发工作。
$ cd ~/githome
$ mkdir foobar
$ cd foobar
$ git init
$ git svn clone http://123.123.123.123/svn/sources/application/public
$ git push origin master
$ touch hello.txt
$ git add hello.txt
$ git commit -am 'first commit'
$ git remote add origin git@123.123.123.123:lovelywolf.git
$ git push origin master
五、使用GIT分支管理开发流程
GIT具有强大而灵活的分支管理方案,我们推荐采用分支进行开发管理。规则:
1.让master分支总是与最新发布的版本保持一致
2.创建dev分支,日常新版本开发工作都在dev分支进行
3.正在dev分支开发新版本时,如发现线上已发布版本存在严重缺陷需要立即发布补丁包修复时,从master分支(或者tag)创建出dev_v0.1.1_bugfix分支进行修复代码开发,完成后将dev_v0.1.1_bugfix代码合并入master和dev分支,再创建新的tag标记版本。
最后如果需要也可以删除dev_v0.1.1_bugfix分支
4.新版本开发完成,将dev分支代码合并入master。同时,从master分支创建出新版本对应的tag
5.随后又在dev分支进行往复的新版本的持续性开发工作
6.更多的特性开发,则可以根据具体需求选择如何在master/dev等基本分支上创建子分支进行开发
六、使用GTI分支管理指令举例
背景:假设master分支存在一个名为README.md的空文件。
1.创建dev分支
$ git branch dev
2.切换dev分支
$ git checkout dev
3.查看所有分支(前面有星号的表示当前所在分支,现在应该是dev分支前有星号)
$ git branch
4.暂存需要提交的文件(eg:在dev分支修改文件:README.md中插入一行Hello World,提交到dev分支)
$ git add README.md
5.提交文件到当前所在分支(当前在dev分支)
$ git commit -m 'add Hello World at first line'
6.合并分支
a) 切换到需要合并到的目标分支,例如需要将dev分支的修改合并到master分支,需先切换回master分支
$ git checkout master
此时查看README.md,该文件是空文件,因为是在dev分支修改的内容
b) 合并dev分支的修改到master分支
$ git merge dev
此时查看README.md,该文件内容与dev分支一样
7.删除分支(例如删除dev分支。注:此处只是演示,按我们的管理策略,dev分支永远存在)
$ git branch -d dev
此时使用git branch查看,只有master分支
8.创建tag(需切换到待创建tag的分支,如现在已在master分支,需在master分支最新commit上创建tag):
$ git tag lovelywolf_v1.0
9.查看所有tag
$ git tag
10.追溯代码创建tag
假如忘记tag,又有几次提交记录了,需要在之前某个提交记录上建立tag
a) 找到历史提交的commit id(通过git log命令,需附上一些参数)
$ git log --pretty=oneline --abbrev-commit
举例(注:前面一截为commit id,后面为提交说明):
bff59fa third commit
ede4ba1 second commit
4c0d95f commit at dev branch
7d984a4 create repo
b) 在指定历史提交上打tag
$ git tag lovelywolf_v2.0 ede4ba1
此时用git tag命令查看,会看到两条tag记录
lovelywolf_v1.0
lovelywolf_v2.0
11.推送标签(标签都是创建在本地,需推送到远端)
a) 推送指定标签到远端
$ git push origin <tagname>
b) 推送所有未推送到远程的本地标签
$ git push origin --tags
12.删除标签
a) 先删除本地标签
$ git tag -d <tagname>
b) 删除远程标签
$ git push origin :refs/tags/<tagname>