Git 和 Github 概述【什么是Git与Github】


Git 分布式版本控制系统(项目 / 代码管理系统)

版本控制

什么是版本控制

  • 版本控制:对每一次改动后的项目进行保存和管理
  • 作用:当多人共同开发项目时,多个改动后的版本在提交时会发生冲突,进行版本控制能有效避免

版本控制工具的功能

  • 协同改动,并行不悖(多人 -> 同一项目)
  • 数据备份,每次更改都被记录
    • 只保存改动部分数据和信息,节省空间
      • SVN 采用增量式管理:只记录改动部分,可据其还原
      • Git 采取文件系统快照方式:
    • 可查看历史记录
    • 可还原到指定的历史状态
  • 开发者权限控制
    • SVN 权限分明、严格
    • Git 允许团队外的开发者贡献代码
  • 分支管理,多线并行(多团队 -> 同样项目(均来自同一源项目))

Git & 代码托管中心

结构

  • 工作区(working direction): 改动、写代码的地方,如notepad++等编辑器
  • 暂存区(index/stage):临时存放 / 追踪改动的数据,待提交分组追踪清单
  • 本地仓库(repository/history):存放各历史版本,在本地
  • 远程仓库(remote repository):存放各历史版本,在云端方便团队交互,代码托管中心

文件状态

工作目录下面的所有文件都不外乎这两种状态:已跟踪、未跟踪(untracked)。

已跟踪的文件是指已经被纳入版本控制管理的文件,目前它们的状态可能是未更新(unmodified,查看文件状态时默认是不显示出来的),已修改(modified)或者已放入暂存区(staged)。未跟踪文件(untracked)一般是新建的,它们并没有出现在前面的版本中,也不在当前的暂存区域。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。

在编辑过某些文件之后,Git 将这些文件标为已修改(modified)。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件,如此重复。所以使用 Git 时的文件状态变化周期如下图:

img

代码托管中心

代码托管中心:维护远程仓库的工具

  • 局域网:Gitlab 服务器

  • 外网:Github(国外),Gitee(国内,码云)

团队内部协作:

团队内部协作.PNG

项目经理(岳不群)启动了一个项目,与团队内的码农(令狐冲有权限对该项目提交改动)一同开发。

  • 令狐冲先将项目clone克隆下来,在本地进行开发
  • 通过push向远程仓库提交在本地做的改动
  • 通过pull从远程仓库同步队友的代码改动

跨团队协作

跨团队协作.PNG

项目经理(岳不群)启动了一个项目,与团队内的码农(令狐冲,有权限对该项目提交改动)一同开发。对于一些代码(葵花宝典)团队内的人并不熟悉,需要请求外部人员(东方不败,没有权限改动项目)的帮助。

  • 东方不败可以使用fork创建分支,复制一个属于自己的相同的项目,进行开发
  • 东方不败通过pull request询问岳不群团队[图片上传中...(跨团队协作.PNG-f67b8e-1620227223956-0)]
    是否“拉回”自己分支的项目,审核通过后可以使用merge整合
  • 分支
    • 主支称master,只允许有一个
    • 其他分支称branch,可以有多个
    • master 如同树干,branch 是树枝
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容