• Git && GitHub


    第一章 为什么要学Git?

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

    第二章 Git的简介和安装

    Git的简介

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

    版本管理系统能干什么?

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

    集中管理型版本管理

    • 经典的集中管理型:CVS、VSS、SVN。
    • 特点:
    • ①实现了大部分开发中对版本管理的需求。
    • ②结构简单,上手容易。
    • 集中管理型版本管理的问题:
    • ①版本管理的服务器一旦崩溃,硬盘损坏,代码如何恢复?
    • ②程序员上传到服务器的代码要求是完整版本,但是程序员开发过程中想做小版本的管理,以便追溯查询,怎么破?
    • ③系统正在上线运行,时不时还要修改bug,要增加好几个功能需要好几个月,如何管理几个版本?
    • ④如何管理一个分布在世界各地、互不认识的大型开发团队?

    分布式版本管理

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

    常见的Git工具

    命令行工具

    IDEA插件

    GitHub

    Git的图形化界面

    Git for Windows的安装

     

    第三章 Git实战操作

    设置用户名和邮箱

    准备工作

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

    初始化git版本仓库

    • 命令:
    git init
    •  示例:

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

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

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

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

    提交文件

    查看文件状态

    • 命令:
    git status
    • 示例:

    将文件添加到暂存区

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

    提交文件到本地库

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

    查看文件提交记录

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

    回退历史

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

     

    版本穿越

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

    还原文件

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

    删除文件

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

    工作区+暂存区+本地库

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

    分支

    分支的引入

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

    查看当前分支

    • 命令:
    git branch -v
    • 示例:

    创建分支

    • 命令:
    git branch 分支名
    • 示例:

    切换分支

    • 命令:
    git checkout 分支名
    • 示例:

     

    合并分支

    • 示例:
    #先切回需要合并的分支
    git checkout 分支名
    #合并分支
    git merge 另一个分支名
    
    ## 比如需要将dev分支的文件合并到master分支上,那么命令如下
    ## git checkout master
    ## git merge dev
    • 示例:

     

    冲突

    冲突的原因

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

    合并时冲突

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

     

    解决冲突

    • 此时通过git diff可以找到发生冲突的文件及冲突的内容。 
    • 示例:

     

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

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

    GitHub是什么?

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

    GitHub的网址

    注册账号的注意事项

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

    GitHub的使用流程

    团队协作

    图解

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

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

    登录GitHub,创建项目,增加远程地址

    • 命令:
    # 远程代码一般为origin
    # 远程地址就是GitHub上的项目的地址url
    git remote add 远程代号 远程地址
    • 示例:在GitHub上创建项目 

    • 示例:增加远程地址

    推送到远程库

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

     

    邀请协作者

    • 示例:

    clone项目

    • 命令:
    git clone 远程地址 新项目目录名(可以省略,如果省略,默认是项目名)
    • 示例: 

    修改完之后,推送项目

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

    拉取项目

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

     

    团队外协作

    • 略。

    第五章 在IDEA中操作Git

    • 略。

    第六章 Git工作流

    Git开发流程

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

    集中式工作流

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

    GitFlow工作流

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

     

    • 示例:

    分支的种类

    • 主干分支 master:主要负责管理正在运行的生产环境代码。永远保持和正在运行的生产环境完全一致。
    • 开发分支 dev:主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。
    • 热修复分支 hot fix:主要负责管理生产环境下出现的紧急修复的代码。从主干分支分出,修理完毕并测试上线后,合并到主干分支。合并完之后,视情况可以删除该分支。
    • 发布版本分支 release:较大版本上线前,会从开发分支中分出发布版本分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段稳定后可以视情况删除。
    • 功能分支 feature:为了不污染开发分支,会从开发分支独立出功能分支。开发完成后会合并到开发分支。
  • 相关阅读:
    版本控制报告
    Beta—review阶段成员贡献分
    规格说明书-----吉林市一日游
    站立会议---11.16
    本周PSP
    软件需求规格说明书
    非序列化字段与反序列化完成后回调
    不同类型的委托变量的共同类型
    实现IDisposable接口的模式
    序列化和反序列化
  • 原文地址:https://www.cnblogs.com/xuweiweiwoaini/p/11403219.html
Copyright © 2020-2023  润新知