Git && GitHub

第一章 为何要学Git?

  • 必点天赋。
  • 必然趋势。

 

第二章 Git的简介和安装

2.1 Git的简介

  • Git是目前世界上最早进的分布式版本控制系统。

2.2 版本管理系统能干什么?

  • 协同开发。
  • 冲突解决。
  • 版本记录。
  • 历史追查。
  • 代码备份。
  • 版本还原。
  • 权限管理。
  • 分支管理。
  • 代码审查。

2.3 集中管理型版本管理

  • 经典的集中管理型:CVS、VSS、SVN。
  • 特色:
  • ①实现了大部分开发中对版本管理的需求。
  • ②结构简单,上手容易。

 

  • 集中管理型版本管理的问题:
  • ①版本管理的服务器一旦崩溃,硬盘损坏,代码如何恢复?
  • ②程序员上传到服务器的代码要求是完整版本,可是程序员开发过程当中想作小版本的管理,以便追溯查询,怎么破?
  • ③系统正在上线运行,时不时还要修改bug,要增长好几个功能须要好几个月,如何管理几个版本?
  • ④如何管理一个分布在世界各地、互不认识的大型开发团队?

2.4 分布式版本管理

 

  • 分布式版本管理的优势:
  • ①容灾能力强。
  • ②本地版本管理。
  • ③异地协做。
  • ④灵活分支。 

2.5 常见的Git工具

2.5.1 命令行工具

2.5.2 IDEA插件

2.5.3 GitHub

2.5.3 Git的图形化界面

2.6 Git for Windows的安装

 

 

第三章 Git实战操做

3.1 设置用户名和邮箱

3.1.1 准备工做

  • 在G盘新建git-project目录。

3.1.2 初始化git版本仓库

  • 命令:
git init

 

  •  示例:

3.1.3 设置项目级别的用户名和密码

  • 命令:
git config user.name "须要配置的用户名"
git config user.email "须要配置的邮箱"

 

  •  示例:

3.1.4 设置系统级别的用户名和密码

  • 命令:
git config --global user.name "须要设置的用户名"
git config --global user.email "须要设置的邮箱"

 

  • 示例:

3.2 提交文件

3.2.1 查看文件状态

  • 命令:
git status

 

  • 示例:

3.2.2 将文件添加到暂存区

  • 命令:
git add 文件名(或目录名)

 

  • 示例:

3.2.3 提交文件到本地库

  • 命令:
git commit -m "注释"

 

  • 示例:

3.3 查看文件提交记录

  • 命令:
# 查看历史记录
git log 文件名
# 简易查看历史记录
git log --pertty=online 文件名

 

  • 示例:

3.4 回退历史

  • 命令:
# 回退到上一次提交
git reset --hard HEAD^
# 回退到n次操做
git reset --hard HEAD~n 

 

  • 示例:

 

3.5 版本穿越

  • 命令:
# 查看历史记录的版本号
git reflog 文件名(目录名)
# 版本穿越
git reset --hard 版本号

 

  • 示例:

3.6 还原文件

  • 命令:
# 没有将修改的文件提交到暂存区,若是将修改的文件提交到了暂存区请先回退到上个版本
git checkout -- 文件名

 

  • 示例:

3.7 删除文件

  • 命令:
#先删除文件再git add,git commit提交

 

  • 示例:

3.8 工做区+暂存区+本地库

  • 工做区:电脑本地硬盘目录。
  • 暂存区:通常存放在.git目录下的index文件中。
  • 本地库:工做区中有个隐藏目录.git,它就是Git的本地版本库。

3.9 分支

3.9.1 分支的引入

  • 系统上线了,可是产品经理又提出了新的需求,评估一下工期须要两个月,可是同时系统正在上线运行,时不时还须要修改bug,如何管理几个版本?

3.9.2 查看当前分支

  • 命令:
git branch -v

 

  • 示例:

3.9.3 建立分支

  • 命令:
git branch 分支名

 

  • 示例:

3.9.4 切换分支

  • 命令:
git checkout 分支名

 

  • 示例:

 

3.9.5 合并分支

  • 示例:
#先切回须要合并的分支
git checkout 分支名
#合并分支
git merge 另外一个分支名

## 好比须要将dev分支的文件合并到master分支上,那么命令以下
## git checkout master
## git merge dev

 

  • 示例:

 

3.9.5 冲突

3.9.5.1 冲突的缘由

  • 冲突通常指同一个文件同一位置的代码,在两种版本合并时版本管理软件没法判断到底应该保留哪一个版本,所以会提示该文件发生冲突,须要程序员手工判断解决冲突。 

3.9.5.2 合并时冲突

  • 程序合并时发生冲突系统会提示CONFLICT关键字,命令行后缀会进入MERGING状态,表示此时是解决冲突的状态。 

 

  •  示例:

 

3.9.5.3 解决冲突

  • 此时经过git diff能够找到发生冲突的文件及冲突的内容。 

 

  • 示例:

 

 

  • 修改冲突文件内容,再次git add 文件和git commit -m “提交注释”提交文件,后缀MERGING消失,代表冲突解决完成。

 

  • 示例:

 

第四章 GitHub简介、和Git的协同办公

4.1 GitHub是什么?

  • GitHub是一个Git项目托管网站,主要提供基于Git的版本托管服务。 

4.2 GitHub的网址

4.3 注册帐号的注意事项

  • 不要使用163的邮箱,有可能收不到验证邮件。
  • 较长时间不使用有可能被GitHub冻结帐号。请登陆其客服页面https://github.com/contact,填写帐号恢复申请。

4.4 GitHub的使用流程

4.4.1 团队协做

4.4.1.1 图解

4.4.1.2 建立本地库、配置用户名和邮箱以及提交文件

  • 命令: 
# 建立本地库
git init
# 配置用户名和邮箱
git config user.name "用户名"
git config user.email "邮箱"
# 新建文件bixiejianfa.txt
# 将文件加入到暂存区
git add bixiejianfa.txt
# 提交文件
git commit -m "辟邪剑法"

 

  • 示例: 

4.4.1.3 登陆GitHub,建立项目,增长远程地址

  • 命令:
# 远程代码通常为origin
# 远程地址就是GitHub上的项目的地址url
git remote add 远程代号 远程地址

 

  • 示例:在GitHub上建立项目 

 

  • 示例:增长远程地址

4.4.1.4 推送到远程库

  • 命令:
# 远程代号是指远程连接的代号。
# 分支名是指要提交的分支名称,好比master
git push 远程代号 本地分支名

 

  • 示例:

 

4.4.1.5 邀请协做者

  • 示例:

4.4.1.6 clone项目

  • 命令:
git clone 远程地址 新项目目录名(能够省略,若是省略,默认是项目名)

 

  • 示例: 

4.4.1.7 修改完以后,推送项目

  • 命令: 
# 配置user.name 和user.email 
git config user.name "用户名"
git config user.email "邮箱"
# 修改文件
git add 修改的文件名
# 提交文件
git commit -m "注释"
# 远程代码 git clone以后,远程代码默认为origin
git push 远程代码 本地分支

 

  •  示例:

4.4.1.8 拉取项目

  • 命令:
# 远程代号指的是远程连接的代号
# 远程分支名值得是远程的分支名称
git pull 远程代号 远程分支名

 

  • 示例:

 

4.4.2 团队外协做

  • 略。

 

第五章 在IDEA中操做Git

  • 略。

 

第六章 Git工做流

6.1 Git开发流程

  • 集中式工做流。
  • GitFlow工做流。

6.2 集中式工做流

  • 像SVN同样,集中式工做流以中央仓库做为项目全部修改的单点实体。全部修改都提交到Master这个分支上。
  • 这种方式与SVN的主要区别就是开发人员有本地库。Git不少特性并无用到。

6.2 GitFlow工做流

  • GitFlow工做流经过为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些很是必要的结构。

 

  • 示例:

 

 

  • 示例:

6.2.1 分支的种类

  • 主干分支 master:主要负责管理正在运行的生产环境代码。永远保持和正在运行的生产环境彻底一致。
  • 开发分支 dev:主要负责管理正在开发过程当中的代码。通常状况下应该是最新的代码。
  • 热修复分支 hot fix:主要负责管理生产环境下出现的紧急修复的代码。从主干分支分出,修理完毕并测试上线后,合并到主干分支。合并完以后,视状况能够删除该分支。
  • 发布版本分支 release:较大版本上线前,会从开发分支中分出发布版本分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段稳定后能够视状况删除。
  • 功能分支 feature:为了避免污染开发分支,会从开发分支独立出功能分支。开发完成后会合并到开发分支。
相关文章
相关标签/搜索