一、安装
Server 安装
- Linx:
- CentOS
$ sudo yum install git-core
- Ubuntu
$ sudo apt-get install git
- Mac:
$ sudo brew install git
- Windows:
- 下载地址 https://github.com/git-for-windows/git/releases/download/v2.17.0.windows.1/Git-2.17.0-64-bit.exe
步骤(略)
验证安装成功
$ git version
图形客户端安装(推荐Sourcetree)
下载破解版本或者添加配置文件跳过注册谷歌账号步骤。(参考)
GitLab
安装:个人一般无需安装,感兴趣的同事可以尝试使用(参考)
GitLab角色设置
GitLab角色 | 团队角色 | 权限 |
---|---|---|
Owner | 技术总监、部门经理 | 所有权限 |
Master | 测试 | 管理master/release分支,打标签 |
Developer | 研发组长 | 管理develop、feature、hotfix分支 |
Reporter | 产品经理、开发人员 | 管理feature、hotfix分支 |
Guest | 工程 | 查看wiki |
更多权限
http://doc.gitlab.com/ee/permissions/permissions.html
- 在GitLab上添加 SSH Keys
- ssh-keygen -t rsa -C ‘xxx@xxx.com’
注意此处邮箱一定要填写自己的公司邮箱
- Linux或者Mac 找到~/.ssh/id_rsa.pub文件
- windows 是C:\Users\Administrator之下.ssh\id_rsa.pub
- 拷贝内容到GitLab登录>用户图标>Setting>SSH Keys
- ssh-keygen -t rsa -C ‘xxx@xxx.com’
二、使用
工作流程
新建库下载代码
- 在git服务器上创建库
- 在本地克隆
$ git clone <repo> <directory>
等效的写法:
$ git clone http://192.168.177.251:8000/test/test-01
$ git clone http://192.168.177.251:8000/test/test-01.git
$ git clone http://192.168.177.251:8000/test/test-01.git test-01
我们建议使用(避免用户名和密码验证)
$ git clone ssh://git@192.168.177.251:222/test/test-01.git
在本机创建库
- 创建和进入目录后执行命令 $ git init
- 删除库 $ rm -rf .git
检出其他分支 git checkout origin/< branch >
备注2:面向开源及私有软件项目的托管平台:
github https://github.com
bitbucket https://bitbucket.org
提交代码
名词解释
- 工作区、暂存区、版本库
提交到本地库
- 添加到暂存区(索引区) $ git add < path>
- 退出暂存区 $git rm –cached < path>
- 查看暂存区状态 $ git status 哪些被删除或者修改过
- 提交 $ git commit -m ‘xxx’
- 删除文件 $ git rm < path >
- 删除文件夹 $ git rm -r < path >
查看远程地址
- gitremote或者用 g i t r e m o t e 或 者 用 git remote -v 默认是名称是origin
- 关联远程库
- 关联 $ git remote add origin < repo >
- 取消关联 $ git remote rm origin
- 推送到远程仓库
- $ git push <远程主机名> <本地branch>:<远程branch>
- $ git push origin < branch >如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名)
比如 git push origin master - 一般使用$ git push 推送当前分支
- 查看日志
- $ git log
- $ git log –pretty=onelin
添加到git忽略, 一般在根目录建立.gitignore文件,定义忽略规则
分支功能
- 增加分支 $ git branch < branch >
- 切换分支 $ git checkout < branch >
- 增加+切换分支 $ get checkout -b < branch >
- 删除分支
- 本地 $ git branch -d < branch >
- 分支还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用命令$ git branch -D < branch>
- 远程 $ git push -d origin < branch >
- 查看分支
- 所有 $ git branch -a
- 远程 $ git branch -r
- 本地 $ git branch
合并功能
- 合并某分支到当前分支 $ git merge < branch >
基变(衍合) $ git rebase < branch >
- 衍合遇到冲突,解决冲突继续, 然后添加索引文件 gitadd<path>,然后 g i t a d d < p a t h > , 然 后 git rebase –continue
- 放弃衍合 $ git rebase –abort
获取代码并合并(更新代码) $ git pull
- 获取代码并衍合 $ git pull –rebase (推荐)
区别:避免菱形,看提交图
- 只针对某个功能的合并 $ git cherry-pick < commit id > 解决移植代码之痛
备注:分支和合并分支是最常用功能
研发经常需要将develop分支合并到feature分支,将feature分支合并到develop分支
测试将release分支合并到master分支
处理冲突
(略)
标签
- 作用:它代表修复了一个bug,或者重大的重构,可以对版本的不同阶段做一个标识。他是一个快照,可以快速找到对应时刻的代码。
- 列出所有本地标签 $ git tag
- 基于最新提交创建标签
- $ git tag
- $ git tag -a -m “”
- 删除标签
- 本地 $ git tag -d
- 远程 $ git push origin :refs/tags/
- 提交标签到远程仓库 $ git push –tags
- 检出一个标签的分支 $ git checkout -b
IDE中GIT
- IDEA 打开本地仓库目录,右下角点击分支,然后checkout切换分支
- Eclipse中使用右键->Team->Switch To->目标分支
- 代码是谁添加的 右键 Annotate