初识 git
Git 是一个免费的开放源码的 分布式版本控制系统,用于处理从小到大的项目,速度和效率的一切。
Git 易于学习,具有 闪电般快速的性能,占地面积小。它超越了像 Subversion,CVS,Perforce 和 ClearCase 这样的 SCM 工具,具有易操作的本地分支,便利的分段区域和 多个工作流等功能。
git 命令
git:查看 git 是否安装成功
git init:创建仓库
git status:查看当前状态
git add:添加到暂存区,等待被提交,还没真正在仓库
git rm --cached:移除添加的缓存,与 git add 相对应
git commit -m "描述信息":提交到仓库,并添加描述信息
git log:查看所有产生的 commit 记录
git branch:查看当前分支情况
git branch -r:查看远程分支
git branch X:创建 X 分支
git checkout X:切换到 X 分支
git checkout X.XX:撤销到原来的 X.XX 文件(只对没有执行 git add 文件有效)
git checkout -b X:创建 X 分支,并且自动切换到 X 分支
git merge X:将 X 分支合并到主分支,前提是先切换到主分支(暴力合并但条理清晰)
git rebase X:将 X 分支合并到主分支,前提是先切换到主分支(进行比较排序合并但条理不清晰)
git branch -d X:删除 X 分支,前提是已经合并到主分支,否则不能删除
git branch -D X:强行删除 X 分支,无论什么情况
git push origin :X:删除远程 X 分支
git checkout X origin/X:将远程 X 分支迁到本地并以 X 命名分支(远程有 X 分支而本地没有的情况下)
git checkout -b X origin/X:将远程 X 分支迁到本地并以 X 命名分支并切换到该分支(远程有 X 分支而本地没有的情况下)
git tag:查看历史 tag 记录
git tag v1.0:创建 v1.0 标签
git checkout v1.0:切换到 v1.0 版本状态
git diff:比较差异(红色显示删除的内容,绿色显示增加的内容)
git diff <id2>:比较两次提交之间的差异
git diff <branch1>..<branch2>:比较两分支之间的差异
git diff --staged:比较暂存区和版本库之间的差异
git stash:把当前分支所有没 commit 得代码暂存起来
git stash list:查看暂存区记录
git stash apply:暂存申请还原,继续上次暂存处
git stash drop:删除最近一条暂存区记录
git stash pop:还原上次暂存处并删除最近一条暂存区记录(相当于执行 git stash apply + git stash drop)
git stash clear:清空所有暂存区记录
ssh:查看是否安装 SSH(一种网络协议,用于计算机之间加密登陆)
ssh-keygen -t rsa:指定 rsa 算法生成密钥,接着连续三个回车生成两个文件 id_rsa 和 id_rsa.pub,id_rsa 是密钥,id_rsa.pub 是公钥,两个文件默认生成目录:Mac/Linux 系统在:~/.ssh 下,Windows 系统在:/c/Documents and Settings/username/.ssh 下,为隐藏文件
ssh -T git@github.com:测试 SSH key 是否添加成功
git clone git@github.com:github用户名/仓库名称:将远程 github 仓库克隆到本地
git push origin master:将本地代码推到远程 master 分支,保持代码同步(push 之前先 pull,避免冲突)
git pull origin master:把远程 master 分支代码拉到本地,保持代码同步(push 之前先 pull,避免冲突)
git remote -v:查看当前项目有哪些远程仓库
git config --global user.name "用户名":设置全局用户名
git config --global user.email "邮箱":设置全局邮箱
git config --global user.name :查询全局用户名
git config --global user.email:查询全局邮箱
git config user.name "用户名":设置当前用户名
git config user.email "邮箱":设置当前邮箱
git config user.name :查询当前用户名
git config user.email:查询当前邮箱
git config --global alias.co commit:给 commit 指令设置全局别名为co(其他指令以此类推)
git config --global alias.psm 'push origin master':给 push origin master 组合指令设置全局别名为 psm(其他组合指令以此类推)
git 设置
git config --global core.editor "vim":设置 editor 使用 vim
git config --global color.ui true:开启 git 着色
git config --global core.quotepath false:设置显示中文文件名
团队合作利器 Git Flow
Git Flow 是一种比较成熟的分支管理流程,比较适合三五个人团队合作开发项目,是一种多人协作下的分支管理规范。点此查看 Git Flow 安装使用
工作流程
通过一张图描述整个工作流程:
各阶段名词解释
- master:永远处在即将发布状态。
- develop:最新开发状态。
- feature:开发新功能的分支,基于 develop 分支,完成后 merge 回 develop。
- release:准备要发布版本的分支,用来修复 bug,基于 develop,完成后 * * merge 回 develop 和 master。
- hotfix:修复 master 上的问题,等不及 release 版本就必须马上上线,基于 master,完成后 merge 回 master 和 develop。
相关规范
- git branch feature/A:假设已经有 master 和 develop 两个分支,需要添加新功能 A,第一步要做的就是基于 develop 新建一个分支 A,规定所有开发的功能都以 feature 为前缀。
- git branch hotfix/B:出现紧急 bug 修复的情况下,立刻切换到 master 分支,然后在此基础上新建分支 B,代表新建了一个紧急修复分支,修复完成后合并到 develop 和 master,然后发布。
- git branch release/1.0:feature 新功能开发完了,合并回 develop 分支,感觉可以发布到正式环境了,新建一个 release 分支。期间发现 bug 直接修改,直到达到发布标准,最后把该分支合并到 develop 和 master 然后进行发布。
专业名词解释
- status:状态
- cached:贮藏
- stash:暂存
- commit:提交
- checkout:切换
- branch:分支
- diff:差异
- clone:克隆
- push:推
- pull:拉
- origin:原点
- remote:远程
- global:全局
- conflicts:冲突
吐血推荐
learn-github-from-zero-pdf 是 Android 大神 stormzhang 的良心之作,本篇博客就是阅读此教程提炼的。希望你看完他的教程能有自己的收获。
原创不易,请尊重他人的劳动成果,欢迎转载,但请注明出处。
morninggeng
05/04/2017