文章目录

  • 前言
  • 一、版本控制系统介绍
    • 1、版本控制系统的概念
    • 2、版本控制系统功能
    • 3、版本控制系统分类
  • 二、Git 与GitHub 简介
    • 1、Git
    • 2、GitHub
  • 三、Git账户注册与管理
    • 1、Git账户的注册
    • 2、账户管理
    • 3、使用Gravatar关联头像与邮箱
  • 四、工作区、本地仓库、远程仓库
    • 1、Git管理中文件的三种状态
    • 2、Git管理中文件流转的三个工作区域
    • 3、文件流转过程
    • 4、开发者团队协作图
  • 五、创建版本库
    • 1、Git和小乌龟工具安装(Windows)
    • 2、Git操作
  • 七、冲突管理
    • 1、冲突产生
    • 2、冲突的解决
  • 总结
  • 附录

前言

当我们在编写大型项目时,经常会遇到以下这些苦逼问题:
        1、不小心删除了自己的项目文档和源代码文件
        2、不敢修改自己的源代码文件
        3、不知道如何把自己项目文档传递给他人
        4、不知道如何把自己的项目分发
        5、不断的拷贝和备份
        6、文档和源代码管理混乱,无法查找
        这些问题是由于大型项目代码量大、需要团队合作、需要频繁迭代造成的,所以我们有必要学习一门技术来解决这些问题。

一、版本控制系统介绍

1、版本控制系统的概念

版本控制系统
        版本控制系统,它是一种软件工程借以在开发的过程中,确保由不同人所编辑的同一档案都得到更新,它通过文档控制记录程序各个模块的改动,并为每次改动编上序号,并且编辑错误之后还可以回溯到以前的版本。

注意点
        版本控制≠版本控制系统。版本控制系统是实现版本控制的工具,而版本控制它是一种软件工程借以在开发的过程中,确保由不同人所编辑的同一档案都得到更新,它通过文档控制记录程序各个模块的改动,并为每次改动编上序号,并且编辑错误之后还可以回溯到以前的版本。

2、版本控制系统功能

1、记录文件的所有历史变化
        2、随时恢复到任何一个历史状态
        3、多人协作开发或修改
        4、错误恢复
        5、多功能并行开发(分支)

3、版本控制系统分类

1、本地版本控制系统(VCS):本地版本控制系统是通过使用简单的数据库保存文件的所有变更。
        2、集中式版本控制系统(VSS、VCS、SVN):有一个包含文件所有修订版本的单一服务器(中央服务器),多个客户端可以从这个中心位置检测出文件。集中式版本控制系统可以很好的解决多人协作间的问题,但是不能解决本地文档管理所存在的问题。
        3、分布式版本控制系统(Git):每一次检出操作都对数据进行一次完整备份,任何客户端都可以利用自己的本地镜像来恢复服务器。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆,在本地机器上拷贝一个完整的Git仓库。更加详细的介绍可查看博文集中式和分布式版本控制系统的区别

二、Git 与GitHub 简介

1、Git

1、Git起源
        Git 由Linux 创始人Linus Torvalds开发,作为Linux 内核代码管理系统使用。Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

2、Git的特点(从开发者角度考虑)
        1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上
        2、在自己的机器上根据不同的开发目的,创建分支,修改代码
        3、在单机上自己创建的分支上提交代码
        4、在单机上合并分支
        5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并
        6、查看邮件或者通过其它方式查看提交状态
        7、解决冲突

3、Git的优点
        1、适合分布式开发,强调个体
        2、速度快
        3、简单的设计
        4、对非线性开发模式的强力支持
        5、有能力高效管理类似Linux内核一样的超大规模项目
        6、离线工作

4、Git的缺点
        1、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息
        2、资料少(中文资料很少)
        3、学习周期相对而言比较长
        4、不符合常规思维

5、Git工作原理

        详细过程可查看博文Git的思想和基本工作原理

2、GitHub

1、GitHub简介
        GitHub是面向开源及私有软件项目的托管平台(官网https://github.com/),GitHub 于2008 年4 月10 日正式上线

2、GitHub功能
        1、Git 代码仓库托管及基本的Web 管理界面。
        2、订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等。
        3、托管项目:Ruby on Rails、jQuery、python 等。

三、Git账户注册与管理

1、Git账户的注册

Git账户的注册(https://github.com/)


注册步骤一

注册步骤二

注册步骤三


注册成功

查看向导页面(GitHub基本操作)
        What is GitHub?
        Step 1. Create a Repository
        Step 2. Create a Branch
        Step 3. Make and commit changes
        Step 4. Open a Pull Request
        Step 5. Merge your Pull Request

2、账户管理



GitHub默认头像
        1、Github给无头像用户生成5x5像素的Identicons头像。
        2、使用用户ID的哈希值,然后根据哈希值每一位的奇偶值来决定对应位置上的像素的开关。这样生成的图像,配上由哈希值决定的颜色,保证可生成大量唯一的图像。

GitHub自定义账户头像

3、使用Gravatar关联头像与邮箱

1、Gravatar简介
        Globally Recognized Avatar(全球识别头像)
        官网:http://www.gravatar.com
        功能:提供的在线头像服务,主要用在博客和论坛留言中,依靠邮件地址识别判断,为每个用户展示个性化的通用头像服务,完全免费。

2、注册Gravatar账户
注册Gravatar账户(http://www.gravatar.com)


邮件确认


登录账户
从邮箱登录

从网站登录

关联头像




头像更换成功

四、工作区、本地仓库、远程仓库

1、Git管理中文件的三种状态

对于任何一个文件,在Git内部都只有三种状态:已修改,已暂存和已提交。
        已修改:表示修改了某个文件,但还没有提交保存
        已暂存:表示把已修改的文件放在下次提交时要保存的清单中了
        已提交:表示该文件已被安全的保存在本地数据库中了

2、Git管理中文件流转的三个工作区域

Git在管理项目时,文件流转的三个工作区域是:本地仓库(即工作目录,也就是项目的源文件)->暂存区域->Git的工作目录。
        1、在本地的工作目录修改某些文件;
        2、对修改后的文件进行快照,保存到暂存区域;
        3、提交更新,将保存在暂存区域中的文件快照永久转存到Git的工作目录中

3、文件流转过程

4、开发者团队协作图


        这种协作模式中可能会出现冲突,比如两名开发者同时从服务器上拿取文件,第一名开发者对文件进行更改,然后提交。第二名开发者也对文件进行修改,然后提交。这样一来第一位开发者对文件的更改将会丢失。对于预防这种冲突的方法是先在提交之前把服务器上最新的内容拿下来,然后再把自己更改的内容提交到服务器。以以上的例子来说,当第二位开发者要提交文件时,应该先将服务器上的最新版本与要提交的项目做一个同步,也就是说把开发者1所做的修改同步到开发者2所载的项目上,然后再进行提交。

五、创建版本库

1、Git和小乌龟工具安装(Windows)

下载地址
        Git下载地址:https://git-for-windows.github.io/
        小乌龟工具下载地址:https://tortoisegit.org/download/
安装完成后的效果

2、Git操作

1、小乌龟工具(TortoiseGit)使用
在GitHub上创建仓库


仓库创建完成


仓库克隆
        在本地新建一个文件夹来存放克隆的仓库,这里取名为Repository。然后进入这个文件夹,右击选择Git Clone

        克隆成功

        本地仓库

        点击进入这个仓库,可以看到一个.git文件夹,这个文件夹包含了这个仓库的信息,有这个文件夹就是一个仓库,如果没有这个.git的文件夹,那么剩下的文件就是工作区。

在本地建立本地仓库并与远程仓库关联
        先建立一个空的文件夹,然后点击进入,右击选择

        执行成功后产生了一个空仓库

        在仓库的空白区域右击,选择TortoiseGit->Fetch


将远程仓库更新的内容同步到本地仓库
        在仓库的空白区域右击,选择TortoiseGit->Pull


将文件添加到暂存区
        在仓库内新建一个文件,然后选中这个文件右击,选择TortoiseGit->Add,这样就可以将文件添加到暂存区。


将暂存区的内容提交到本地仓库

        提交成功

        点击Push可以直接提交到远程仓库。

将文件添加到本地仓库
        在仓库的空白区域右击,选择Git Commit->“main”,可以直接将新建的文件添加到本地仓库,也可以将暂存区中的文件添加到本地仓库。



        点击Push可以直接提交到远程仓库。

将本地仓库提交到远程仓库
        在仓库的空白区域右击,选择TortoiseGit->Push,可以直接本地仓库的内容提交到远程仓库。



        提交成功

        我们可以在GitHub上面看到提交成功的文件

为仓库添加合作者





此处的连接为:https://github.com/luotingyang/MyRepository/invitations,当合作者点击进入这个连接那么合作者就拥有了这个仓库。

创建分支


删除分支

选择默认远程仓库的分支




给当前仓库重命名

删除仓库
        点击Options里面的


2、Git命令行使用
        右击,选择Git Bash Here,打开命令行。

        命令行成功打开后就可以开始输入Git命令
(1)、Git常用命令
        设置用户名
                git config --global user.name   “用户名”
        设置用户邮箱
                git config --global user.email  “用户邮箱”
        查看设置
                git config --list

(2)、Git本地操作
    1)、初始化一个新的Git仓库
        1、创建一个文件夹(或使用已有的文件夹)
                mkdir demo
        2、进入刚创建的文件夹内初始化Git,创建Git仓库
                cd demo
                git init

2)、Git修改操作
        1、在本地工作区修改或新增文件/目录
        2、空白处右键–>GitBash Here
        3、添加新增加/修改的所有内容
                git add *
        4、提交到本地仓库
                git commit  -m “传输文件的描述”
        5、提交到远程仓库
                git push

七、冲突管理

1、冲突产生

1、本质
        merge 和patch时产生冲突
2、冲突的类型
        1、逻辑冲突
        2、内容冲突
        3、树冲突

2、冲突的解决

1、发现冲突
        一般来讲,出现冲突时都会有“CONFLICT”字样
2、冲突解决的一般过程
        merge/patch的冲突解决
        先编辑冲突,然后gitcommit提交
        rebase的冲突解决
        rebase的冲突解决过程,就是解决每个应用补丁冲突的过程
3、编辑冲突的方法
        直接编辑冲突文件
        利用图形界面工具解决冲突

总结

在编写项目的过程中,为了系统管理代码,提高编写效率,减少出错的可能,版本控制系统非常有必要,作为分布式版本控制系统的代表Git更是值得我们学习。希望这篇文章可以为在学习版本控制技术的各位朋友提供一些帮助。

附录

视频学习资料:Git与Github入门(分布式版本控制系统应用基础)

轻松Git与Github入门相关推荐

  1. Git与Github入门资料

    Git与Github入门资料 Git主要优势及安装 git,一个非常强大的版本管理工具.Github则是一个基于Git的日益流行的开源项目托管库.Git与svn的最大区别是,它的使用流程不需要联机,可 ...

  2. Git与Github入门(一)

    Git与Github入门(一) 环境: Git与GitHub的来历 Linux 之父 Linus 在 1991 年创建开源的 Linux 操作系统之后,多年来依靠全世界广大热心志愿者的共同建设,经过长 ...

  3. git和github入门实践(5):Git 标签 tags 和 GitHub 版本 releases

    一.Git 标签的作用 在一个项目中,我们可能需要阶段性地发布一个版本,比如 V1.0.V1.0.2.V3.2 Beta 之类的,Git 的标签可以满足这个需求. 1 创建标签 前面提到过 GitHu ...

  4. clone git 修改保存路径_Git和Github详细入门教程(别再跟我说你不会Git和Github)

    前言:成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成.你好,我是梦阳辰,快和我一起搞定Git和Github吧. 文章目录 01.Git概述 02.Git的本地仓库操作 Git的版本回退操作 ...

  5. Git和GitHub快速入门

    Git入门 简介 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本控制系统. 工具 准备工具 Git下载地址:https://git-scm ...

  6. Git GitHub 入门篇

    Git & GitHub 入门篇 参考:猴子都能懂的 Git 入门 0. 环境 CentOS 7.4 1. Git 安装 1.1 直接安装 安装 Git: yum install -y git ...

  7. Android基础-系统架构分析,环境搭建,下载Android Studio,AndroidDevTools,Git使用教程,Github入门,界面设计介绍

    系统架构分析 Android体系结构 安卓结构有四大层,五个部分,Android分四层为: 应用层(Applications),应用框架层(Application Framework),系统运行层(L ...

  8. Git 和 GitHub 教程——版本控制入门

    大家好,我是若川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

  9. 【新手入门必看】git 和 github 介绍

    git 和 github 介绍 因为在学习 MaixPy 的过程中, 有很多地方用到 git 和 github, 所以这里简单解释一下它们是什么,以及区别是什么. 1. 什么是 git git 是一款 ...

最新文章

  1. 蓝桥杯-字串统计(java)
  2. Java基础day4
  3. Mondrian 3.14.0 服务配置说明(限功能使用验证)
  4. POJ 1273 (基础最大流) Drainage Ditches
  5. Android面试最新总结
  6. 计算机网络——编码和调制
  7. 胡言乱语生成器微信小程序源码在线取名等支持流量主收益
  8. MySQL数据库概述
  9. ftp ---- 本地用户登录(实例配置1:)
  10. 力扣—— 224. 基本计算器(困难)
  11. c access mysql数据库_基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)...
  12. Aittit.attilax超级框架 api 规划大全
  13. 数字图像处理基础知-色度空间(RGB\CMY\CMYK\HSI的详细解释和一些关联性描述)
  14. 英文单词乱序后还原 c语言,乱序背单词_有谁也用《不背单词》这个软件吗怎么可以改变背单词的顺序有顺序倒序和乱序的_淘题吧...
  15. 人生苦短,聊聊Python的那些特点
  16. PTA每日一题-Python-身份证校验
  17. 麦客服务器维修,麦客
  18. 实战版 天猫精灵接入指南(AliGenie接入)
  19. 北京住房公积金管理中心个人住房公积金 贷款等额均还月还款额参考表
  20. 有哪些赚钱的软件?说说我是如何每天赚上千元的!

热门文章

  1. ubuntu下ftp搭建
  2. Visual Studio 2019重新安装问题
  3. 广东智汇盟获颁广州市番禺区慈善会捐赠证书
  4. OpenSSH 修复预认证双重释放漏洞
  5. 浅析我对Web(淘宝网)导航栏的深入理解
  6. Laragon添加PHP_Redis扩展
  7. 保险公司免费赠送保险可信吗?
  8. 《红楼梦》之金陵十二钗vs韩国明星
  9. 数商云SCM系统供应商准入协同业务场景 | 助力建筑建材企业规范供应商准入环节
  10. ssm基于JavaEE的电脑销售管理系统设计与实现 毕业设计-附源码021143