编 写:袁 亮
时 间:2017-01-17
说 明:30分钟,快速在项目中使用git
一、账号环境
1、https://gitlab.oneitfarm.com
使用自己的企业邮箱注册自己的账号
2、安装windows环境
https://git-scm.com/downloads/guis
\\192.168.0.18\运维网络硬盘\y袁亮\software\Git-2.8.1-64-bit.exe
cmd下运行 git 配置
git config --global user.email ""
git config --global user.name ""
3、生成sshkey (https,安全证书,一台电脑一个)
任意目录,右键,打开 Git GUI
help => show sshkey => Generate Key
4、在gitlab添加ssk key
https://gitlab.oneitfarm.com/profile/keys
二、加入开发组
1、申请加入开发者 https://gitlab.oneitfarm.com/geek
2、审核通过,并分配相应权限
三、导出项目代码
1、本地无代码,从远程拉取【必须会】
1.1 注意事项
使用https协议的,ssh的服务器没有开启
所有跟远程代码库交互,都需要输入git账号和密码
windows下,空项目一直clone不下来
1.2 linux
git clone https://gitlab.oneitfarm.com/geek/dealer.git yl
1.3 windows
空目录,右键Git Gui
Clone Existing Respository
ps:需要输3次账号密码,不知道是什么鬼
2、本地有代码,关联到远程一个空代码库【了解即可】
2.1 linux
a. 创建本地仓库 git init
b. git remote add
2.2 windows
a. 创建本地仓库 Git Gui => Respository => New
b. 将本地代码,提交到本地仓库 stage change => commit
c. 关联远程代码仓库 Remote => Add
origin
https://gitlab.oneitfarm.com/geek/dealer.git
d. 提交到远程代码仓库
push
3、本地有代码,关联到远程一个非空代码库
略
四、常规操作 【必须会】
1、本地仓库 查看当前git状态
1.1 git status (svn st)
1.2 可以通过配置alish,使用git st
2、本地仓库 新增文件
2.1 新增
git add application/controllers/Store.php
2.2 提交到本地仓库
git commit -m '增加store控制器' application/controllers/Store.php
3、本地仓库 修改文件
3.1 查看文件改动
git diff webroot/index.php
3.2 不想修改,恢复文件
git checkout webroot/index.php
3.3 文件改动存入缓存区
git add webroot/index.php
3.4 改错,不想保持,取消修改
git reset webroot/index.php
git checkout webroot/index.php
3.4 提交修改
git commit -m 'index.php代码' webroot/index.php
4、本地仓库 删除文件
4.1 本地仓库删除
git rm debug.php
4.2 发现删了,撤销
git reset HEAD debug.php
git checkout debug.php
4.3 确认删除,提交
git commit -m '删除调试代码' debug.php
4.3 提交之后发现删错了
a. 查看 log
git log
b. 找到删除前的版本,并回滚到那个版本
git reset --hard {commit_id}
将被删除的文件备份出来
c. 查看所有的版本log,并找到要恢复的版本
git reflog
d. 恢复到最新版本
git reset --hard {commit_id}
e.将备份出来的代码还原回去
cp或者mv回来,然后add,commit
5、查看文件版本记录
git log webroot/index.php
6、提交代码到远程仓库
git push -u origin master
7、从远程代码库拉取最新代码
git pull
8、常用设置
8.1 pull push 免去每次输账号密码
git config --global credential.helper store
8.2 颜色设置
git config --global color.ui true
8.3 常用alias
git config --global alias.st 'status'
git config --global alias.ci 'commit'
git config --global alias.co 'checkout'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
9、忽略文件(日志,配置等不想要提交的文件)
在项目文件下新建.gitignore文件
文件中写入 /.idea/* 即忽略.idea文件 (!/.idea/echo.php 即不忽略.idea文件夹下的echo.php文件)
*.txt 忽略txt类型的文件
最后别忘了提交.gitignore文件
五、分支操作
1、查看本地仓库分支及当前所在分支
git branch
2、新建分支
2.1 正常创建
git branch dev
git checkout dev
2.2 命令合并
git checkout -b dev
2.3 从远程仓库创建分支
a. 确保远程仓库有这个分支
b. 更新本地仓库,确保本地知道远程仓库的分支
git remote update
git fetch
git remote show origin :查看远程分支
c. 从远程分支中checkout一个分支到本地
git checkout -b yl origin/yl
ps:本地分支名可以起的跟远程分支名不一样,但不建议这么做,除非本地多个分支对应远程同一个分支
d. 分支改动push到对应远程分支
git push origin yl
3、切换分支
git checkout master
4、删除分支
git branch -d dev
ps:如果删除未合并的分支,需要用-D参数,慎用,除非是写临时脚本的分支
5、合并分支
5.1 git merge dev
5.2 该命令是将dev分支合并到当前所在分支,因此需要先checkout到你所想要合并到的分支
git checkout master
5.3 冲突解决
a. 手动修改冲突文件,然后提交
b. 借助 mergetool (还没用过)
5.3 查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit
6、给绑定分支绑定远程分支
git branch --set-upstream demo origin/yl
7、拉取合并指定指定远程仓库的指定分支
git pull
git pull origin yl
六、GitLab Flow 工作流
1、参考文档
http://www.ruanyifeng.com/blog/2015/12/git-workflow.html
2、我们采用的方式
Gitlab flow
版本发布
七、远程仓库使用
1、添加远程仓库
git remote add
shortname默认是origin
2、查看远程仓库信息
git remote :查看shortname
git remote -v :查看完整信息
3、拉取远程仓库的信息
git fetch :也可以使用,默认是origin
ps:fetch只会拉取数据,但并不合并,pull是fetch之后会自动合并git merge
4、推送到远程仓库
4.1 git push origin master
4.2 将本地master分支推送到origin远程仓库中对应的分支
4.3 如果origin仓库里对应的分支已经有人改过,必须先pull下来,然后才能推送
4.4 master分支推送到origin仓库的具体哪个分支,是由之前创建分支的时候决定的,并不是根据分支名来
如果两个名字不一样,很容易出现一些看起来莫名其妙的问题,所以不要干这个事
5、查看远程仓库
git remote show [remote-name]
八、标签tag (对应之前的release)
1、本地仓库 查看所有标签
1.1 git tag
1.1 git tag -l '匹配规则,可以写正则'
1.2 以标签名排序,不以创建时间
2、本地仓库 创建标签
2.1 git tag -a v1.0.0 -m '标签注释'
2.2 不输入-m,在运行编辑器里可以更方便的写各种备注
2.3 不允许打轻量标签,除非是本地测试用
3、本地仓库 查看标签信息
git show v.1.0.0
4、将标签推送到远程仓库
4.1 git push origin [tagname]
4.2 多个标签,也单个单个推,不允许一次性把所有标签推上去
5、从标签中检出新的分支
5.1 git checkout -b fix-v2.0.0 v2.0.0
5.2 类似分支的创建,如果本地没有v2.0.0这个标签,需要先从远程仓库pull或者fetch下来
6、修复线上tag两种办法
参考文档:
1、Git教程
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
2、Git 工作流程
http://www.ruanyifeng.com/blog/2015/12/git-workflow.html
3、Git分支管理策略
http://www.ruanyifeng.com/blog/2012/07/git.html
4、Git 使用规范流程
http://www.ruanyifeng.com/blog/2015/08/git-use-process.html
5、git 文档
https://git-scm.com/book/zh/v2/
6、Git可视化极简易教程 — Git GUI使用方法
http://www.runoob.com/w3cnote/git-gui-window.html
7、GitLab Flow的使用
https://www.15yan.com/story/6yueHxcgD9Z/
https://about.gitlab.com/2014/09/29/gitlab-flow/
8、如何使用gitlab的flow以及代码review
http://mojito515.github.io/blog/2016/03/09/ru-he-shi-yong-gitlabde-flowyi-ji-dai-ma-review/
9、The 11 Rules of GitLab Flow
https://about.gitlab.com/2016/07/27/the-11-rules-of-gitlab-flow/
10、使用git、git-flow与gitlab工作
http://blog.2baxb.me/archives/736
11、GitLab的Pull Request工作流
http://www.jianshu.com/p/6bcd082101c1
12、常用 Git 命令清单
http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html