【计算机教育中缺失的一课】Git 快速入门

Git 简介

Git 是一个分布式版本控制工具,最初版本由Linux之父Linus在一周之内开发完成,目的是为了解决Linux内核维护工作的代码同步(不得不感叹李纳斯简直是神啊)

Git 与其他版本控制工具的差异

  • 别的版本控制工具侧重文件内容的具体差异
  • Git 关心文件数据的整体是否发生变化,把变化的文件作快照
  • Git 并不保存这些前后变化的差异数据,而是对数据得到进行sha-1摘要,并将此结果作为数据的唯一标识和索引,若文件没有变化,Git 不会再次保存

git 使用过程

创建文件夹
【计算机教育中缺失的一课】Git 快速入门
git init

由于刚刚初始化,此时显示On branch master,No commits yet,nothing to commit
【计算机教育中缺失的一课】Git 快速入门
创建文件并修改
【计算机教育中缺失的一课】Git 快速入门
将文件放入暂存区
【计算机教育中缺失的一课】Git 快速入门
提交到本地
【计算机教育中缺失的一课】Git 快速入门

文件的几种状态

修改(modified)

修改了某个文件,但还没有提交保存

暂存(staged)

把已修改的文件放在下次提交时要保存的清单中

提交(committed)

该文件已经被安全地保存在本地数据库中

基本的 Git 工作流程

  • 在工作目录(working directory)中修改某些文件
  • 对修改后的文件进行快照,然后保存到暂存区域(staging area)
  • 提交更新(committed),将保存在暂存区域的文件快照永久转储到 Git 目录中

下面是工作目录,暂存区域,以及本地仓库三者之间的关系
【计算机教育中缺失的一课】Git 快速入门

git add

git add 命令,根据目标文件的状态不同,此命令的效果也不同

  • 可以用它开始跟踪新文件
  • 把已跟踪的文件放到暂存区
  • 还能用于合并时把有冲突的文件标记为已解决状态

告诉 Git 开始对这些文件进行跟踪

tracked 、 untracked分别标识跟踪/不跟踪。对于每个文件,都只能处于这两种状态的其中一种

几个要注意的点:

  • 已跟踪的文件是指被纳入版本控制管理的文件
  • 未被跟踪的文件是指不被纳入版本控制管理的文件
  • 要确定哪些文件当前处于什么状态,可以用 git status 命令,若是 nothing to commit (working directory clean),则标识你现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过

【计算机教育中缺失的一课】Git 快速入门

git status

要确定哪些文件当前处于什么状态,可以用 git status 命令,若是 nothing to commit (working directory clean),则标识你现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过

git diff

git status 的显示仅仅是列出了修改过的文件,如果要查看具体修改了什么地方,可以用 git diff 命令

  • git diff:此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容
  • git diff --staged:已经暂存起来的文件和上次提交时的快照之间的差异

git ignore

写在git ignore中的文件无需纳入 Git 的管理,比如说,在目录下创建.gitignore文件,然后在文件中写入:

*.c    		忽略所有的c结尾的文件
!wdnmd.c 文件wdnm.c不放入忽略沐浴露
/nmsl		只忽略项目根目录下的 nmsl文件,子目录下的nmsl文件不受影响

git clone

git clone命令可以复制一个现有仓库,且仓库中包含所有的历史版本

下面是几个常用的实际情景

通过HTTPS的方式
$ git clone https://github.com/richardchien/modern-cmake-by-example.git

通过ssh的方式
$ git clone git@github.com:richardchien/modern-cmake-by-example.git

通过ssh的方式,并且将本地的目录名命名为 wdnmd
$ git clone git@github.com:richardchien/modern-cmake-by-example.git wdnmd 

通过ssh的方式,且要克隆的是某个服务器上的git目录仓库
$ git clone user@server:/path.git 




git commit

  • 直接输入git commit,这种方式会启动文本编辑器以便输入本次提交的说明,编辑器是Vim
  • git commit -m “xxxx”,这种方式表示本次提交说明是引号中的xxx
  • git commit -a -m ‘xxxx’ 这种方式跳过git add的过程直接将所有文件加入到暂存区然后提交

git log

该命令会打印出所有的提交历史,会按提交时间列出所有的更新,最近的更新排在最上面,每次更新都有一个 SHA-1 校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明

$ git log -p -2

-p 选项展开显示每次提交的内容差异
-2 则仅显示最近的两次更新:

git push

git push 是用来将本地仓库中的数据推送到远程仓库

如果要把本地的 master 分支推送到 origin 服务器上,可以使用以下语句:

git push [remote-name] [branch-name]

git 分支

//TODO

思维导图

【计算机教育中缺失的一课】Git 快速入门

该图来自微信公众号:绯浅yousa

精选Git资料推荐

网页在线资料

书籍

  • Github入门与实践
  • Git团队协作

可视化的 Git 在线学习网站

上一篇:BGP路由的生成方式


下一篇:某高校网工期末作业,路由交换机综合案例配置,连MPLS、ISIS、路由黑洞等都涵盖了。