1.基本了解
1.1版本控制概念
Git 命令是部分命令行工具的集合,它可以用来跟踪,记录文件的变动。比如你可以进行保存、比对、分析,合并等。这个过程被称之为版本控制
常见:比如 SVN, Mercurial, Perforce, CVS, Bitkeepe 等。
1.2本地仓库及创建
Git是分布式的,这意味着它并不依赖于中心服务器,任何一台机器都可以有一个本地版本的控制系统,我们称之为仓库
创建一个新仓库
创建一个新的仓库,首先要去到项目路径,执行 git init。然后git会创建一个隐藏的文件夹.git,所有的信息都储存在其中。
(1)执行git init
git init:
mygit git:(master) git init Reinitialized existing Git repository in /Users/zhangmeiyuan/git/mygit/.git/
(2)新建一个:hello.txt
touch hello.txt
(3)编辑文件内容:vi hello.txt
(4)检查状态:git status
git status 是另一个非常重要的命令,它会告诉我们创库的当前状态:是否为最新代码,有什么更新
git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) hello.txt nothing added to commit but untracked files present (use "git add" to track)
git 告诉我们,hello.txt尚未跟踪,这是因为这个文件是新的,git不知道是应该跟踪它的变动呢,还是直接忽略不管呢。为了跟踪我们的新文件,我们需要暂存它
(5)暂存:git add
git 有个概念叫 暂存区,你可以把它看成一块空白帆布,包裹着所有你可能会提交的变动。它一开始为空,你可以通过 git add 命令添加内容,并使用 git commit 提交
mygit git:(master) git add hello.txt
(6)提交-git commit
一次提交代表着我们的仓库到了一个交付状态,通常是完成了某一块小功能
mygit git:(master) git commit hello.txt [master 9cb3dba] first commit by zhangmeiyuan first ----------------- 1 file changed, 20 insertions(+) create mode 100644 hello.txt
1.3 远端仓库
为了能够协同开发,我们需要把代码发布到远端仓库上。
1、链接远端仓库 – git remote add
git remote add origin https://github.com/tutorialzine/awesome-project.git
2、上传到服务器 – git push
每次我们要提交代码到服务器上时,都会使用到git push。
git push命令会有两个参数,远端仓库的名字,以及分支的名字
git push origin master Counting objects: 3, done. Writing objects: 100% (3/3), 212 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/tutorialzine/awesome-project.git * [new branch] master -> master
3、克隆仓库 – git clone
本地也会创建一个新的仓库,并自动将github上的分支设为远端分支。
4、从服务器上拉取代码 – git pull
如果你更新了代码到仓库上,其他人可以通过git pull命令拉取你的变动
1.3分支
当你在做一个新功能的时候,最好是在一个独立的区域上开发,通常称之为分支。分支之间相互独立,并且拥有自己的历史记录。这样做的原因是:
稳定版本的代码不会被破坏
不同的功能可以由不同开发者同时开发。
开发者可以专注于自己的分支,不用担心被其他人破坏了环境
在不确定之前,同一个特性可以拥有几个版本,便于比较
1、创建新分支 – git branch
每一个仓库的默认分支都叫master, 创建新分支可以这样
git branch amazing_new_feature
2、切换分支 – git checkout
单独使用git branch,可以查看分支状态
git checkout amazing_new_feature
3、合并分支 – git merge
amazing_new_feature 分支的任务是增加一个featuer.txt。我们来创建,添加到暂存区,提交。
$ git add feature.txt
$ git commit -m "New feature complete."
git checkout master
会发现,之前创建的feature.txt文件不见了,因为master分支上并没有feature.txt。使用git merge 把 amazing_new_feature 分支合并到master上。
git merge amazing_new_feature
git branch -d amazing_new_feature
删除amazing_new_feature 分支
1.4 协同工作
多人协作的话,你还需要一个线上仓库,用来同步信息
比如:GitHub
2. 如何拉取代码
2.1 安装
Mac 自带git,免安装
2.2 配置
注册项目git站(http://10.20.11.218/),并申请权限
Git最简单配置,username和mail
配置用户名:git config --global user.name = "xxxxxx"
配置邮件:git config --global user.mail= "xxxxxx@pingan.com.cn
配置默认编辑器:git config --global core.editor emacs
查看某项配置:git config user.name
查看所有配置:git config --list
获得config命令的帮助:git help config
记住密码:git config --global credential.helper store
2.3 初始化工程ffinit
(1)拉取ffinit工具
git clone http://10.20.11.218/FFProject/ffinit.git [拉取下来文件名]
(2)进入ffinit目录
python ffinit.py -p <平台,ios/android> -t <目标文件夹> [-b <拉取分支,多个用逗号分隔>] eg:python ffinit.py –p android –t . (拉取android主工程master分支)
(3)项目管理自带工具fmanager
Android和ios自带项目管理工程fmanager,具备分支切换,更新代码功能
1、ios&android主工程目录自带工具
2、切换分支
./fmanager checkout <分支名>
3、更新代码
./fmanager update/pull 效果一样
3.常用GIT命令
掌握常用的git命令,可以在项目测试过程中,将项目代码拉取到本地进行代码review,也可以通过git相关命令查看提测代码的改动点,bug修复引起的关联模块的改动点有哪些,进行测试分析,从而进行更精准以及更全覆盖率的回归测试。
查看提交日志:git log
git log -[数字,代表看最近几个提交log] 黄色部分是commit id,只记住前8位就可以区分提交
查看项目当前分支:git branch
分支概念
分支概念:Git最强大的功能,多分支开发&迅速创建、切换分支
跟svn的分支概念类似,不过创建切换都更方便,可以理解成两个平行宇宙,互相独立,同一个仓库
开发后续都在xxx_dev上开发,并开发完成后merge到xxx分支上, 构建站打xxx分支上的包 (构建站原理)
命令使用
git branch ——查看当前分支
git branch -l ——查看当前项目本地已有分支列表
git branch -a ——查看本地已有分支 & 红色字表示远程仓库分支列表
查看提交变化内容:git show(可以显示标签信息和对应提交的信息)
git show <commit id>(8位或者全部)——查看该commit id变化内容
对比两次commit的差异:git diff
git diff <commit id><commit id> 对比两次commit的差异
查看当前所对应的远程仓库:git remote
git remote -v:显示远程仓库简写与其对应的 URL
git remote add test https:/remote_store/test:添加一个远程仓库,仓库名为test
git remote show origin:查看远程仓库origin更详细信息
同步当前远程分支到本地:git pull
推送当前分支已提交的代码到远程:git push
git push origin new_branch:推送当前分支test代码到远程origin仓库中,配合新建本地分支(git branch new_branch)使用
git push origin v1.2:默认本地新建标签不会同步到远程,需要用本条命令将特定标签推送至远程服务器
git push origin --tags:将本地所有的标签推送至远程服务器
git branch -r -d origin/del_branch git push origin :del_branch 删除远程分支del_branch,本地不会被删除
4.学习资源
廖雪峰的Git教程:http://www.liaoxuefeng.com
Git子模块使用简介,在F项目中运用的很多的submodule:http://www.tuicool.com/articles/fqUzIfa
九月 01, 2017. Created by XMind