Git和GitHub入门

经过jl大佬和hy大佬的指导后重新编写

放GitHublogo章鱼猫的图片来作为引入

what

Git和GitHub是什么

Git (/ɡɪt/) is a distributed version-control system for tracking changes in source code during software development. –wikipedia
GIT是一个分布式版本控制系统用于跟踪的变化系统的源代码中的软件开发。–维基百科

GitHub is an American company that provides hosting for software development. Github includes version control using Git, which allows software projects to keep track of all versions and revert to previous versions if necessary. –wikipedia
GitHub是一家美国公司,为软件开发提供托管。GitHub包含使用Git进行的版本控制,该版本控制允许软件项目跟踪所有版本,并在必要时还原为以前的版本。–维基百科

用人话说Git是啥
Git是一种分布式版本控制系统。但它的核心其实是数据库。Git把我们的每一次提交记录到数据库中。我们可以通过对数据库进行查询来了解并回溯每一次提交,这就实现了版本控制。然后我们可以选择将这个数据库完整的克隆到另一台服务器上,这就实现了分布式。

Git的工作流程

Git将我们的每一次提交放到工作目录的缓存空间,完成保存。然后等你想提交到远程仓库的时候再从缓存区里提交出去。同样的,你也可以从远程仓库将文件下载回工作目录。

git-workflow1

啥是分布式版本控制系统(Distributed Version Control)

说到分布式版本控制系统就不得不提到集中式版本控制系统,他们最大的差别在于分布式的仓库可以有很多份。其实这是一个去中心化的概念。在集中式版本控制系统中,拥有唯一的中心也就是我们常说的服务器。中央服务器是一切的核心,储存着所有的数据。而分布式版本控制则是一个去中心,或者说是多中心的系统。每一个开发者的本地仓库都拥有着全部的数据。 “push” “pull” 操作则是为了让所有的仓库数据统一而已。

distributed system

Git VS SVN

集中式(SVN) 分布式(Git)
有无中央服务器 有。开发者脱离服务器几乎无法工作 无。开发者有本地仓库
分支操作 创建分支则所有人都有此分支 分支操作不影响其他人
提交 直接提交到中央版本库 首先提交到本地缓存区,执行push操作才提交到版本库
图释

what

// 有一说一git/github的功能详细并没有做,还是沿用了原来的简易版本

我们用Git和GitHub来干什么

  • 代码托管 //不解释
  • 项目管理 //如,版本控制、协作编程
  • 资源备份 //如,托管编程环境、备份核心代码
  • 托管静态网页 //如,GitHub Page
  • 个人简历 //你可以在GitHub上展示你自己
  • 查找资料 //GitHub可能是全世界程序方面资料最多的地方
  • 交朋友 //全球最大的同性交友平台
  • 资讯来源 //GitHub热榜!比知乎更有料,比微博更劲爆

how

Git的安装和使用

安装

点击此处进入官方安装教程

使用

让我们先新建一个仓库(文件夹),进入文件夹并打开Git Bash。
执行

1
$ git init

接下来你可以执行如下命令以创建一个本地仓库的克隆版本:

1
$ git clone /path/to/repository

如果是远端服务器上的仓库,你的命令会是这个样子:

1
$ git clone username@host:/path/to/repository

搭建好仓库后,如果你有所改动可以把它添加到缓存区,使用如下命令:

1
2
$ git add <filename>
$ git add * //将所有的改动都添加

最后使用如下命令以实际提交改动:

1
$ git commit -m "代码提交信息"

现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。
执行如下命令以将这些改动提交到远端仓库:

1
$ git push origin master	//可以把 master 换成你想要推送的任何分支。

注意事项

  • git commit 命令一定要添加描述,否则会无法成功运行

本段参考自https://www.bootcss.com/p/git-guide/
想要深入了解GIt的同学可以前去参考

// Git命令太多,基本命令已经在上文展示故取消Git命令大全板块
// 使用git中常见的问题和注意事项过于杂乱,故只提一点