What is version control(版本控制)?

​ 如果你是位图形或网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本(这或许是你非常渴望拥有的功能),采用版本控制系统(VCS)是个明智的选择。有了它你就可以将某个文件回溯到之前的状态, 甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方, 从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。使用版本控制系统通常还意味着, 就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。但额外增加的工作量 却微乎其微。

​ 什么是“版本控制”?我为什么要关心它呢?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。在本书所展示的例子中,我们对保存着软件源代码的文件作版本控制,但实际上,你可以对任何类型的文件进行版本控制。

本地版本控制

​ 许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这么做唯一的 好处就是简单,但是特别容易犯错。有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文 件。

​ 为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。

preview

A way to version – git

本地仓库尝试

  • For windows cmd/powershell

图形化界面(新手快速入门)

  • GitHub Desktop客户端下载,用于帮助我们管理git仓库
  • 安装
  • 1570768835182
  • 登陆
  • 1570768963366
  • 进入
  • 1570769071987
  • 我们准备了给大家练习的github repo:https://github.com/seumsc/playground,点击可看远端仓库情况。
  • 1570770409091
  • 戳 open in Desktop即可在github desktop中打开啦
  • 1570770464201
  • 1570770525705
  • 确认后一键clone
  • 1570770539134
  • 完成!这就是主界面啦~
  • 1570770595707
  • 此处我们打开仓库所在文件夹并打算上传一个文本文件
  • 1570770910579
  • 回到github desktop,我们发现github desktop已经自动发现了我们的新文件并列出改动了哪些文件
  • 1570770997715
  • 首先我们做一个提交(commit),填写提交信息”Create Welcome.txt”简略描述我们的提交做了哪些改动,然后产生一个提交(在本地)
  • 1570771076057
  • 此时我们发现这里提示“1↑”表示本地仓库比远程多一个提交,同理“x↓”也表明远程仓库比本地多x个提交,这种时候应该考虑更新本地仓库
  • 点击push origin讲这个提交提交到github服务器上
  • 刷新github页,我们发现这个文件已经顺利提交啦

尝试

提交你的问候到我们的演练场仓库上(。・∀・)ノ゙

⚠若您的github账号没有加入我们的组织,则无法clone和push,请联系我们添加您的账号

命令行界面(高效快速)

  • 安装git
  • 初始化git仓库
1
2
3
4
5
6
# 切换到想要放项目的目录
cd D:\
# 建立项目文件夹
mkdir myRepo
# 初始化git仓库
git init
  • 添加远程仓库地址,分配仓库名origin到地址``
1
git remote add origin [email protected]:seumsc/playground.git
  • 推拉操作
1
2
3
4
5
6
7
8
# 从远程分支拉取
git pull [form name] [branchname]
# 推送到远程分支
git push [--set-upstream] [form name] [branchname]
# 查看历史
git log
# 查看更改详细信息
git show
  • 储存区操作
1
2
3
4
5
6
7
8
# 添加文件到storged
git add [file]
# 添加所有文件
git add .
# 从git删除某些文件
git rm [--cached][filename]
# 产生一个提交
git commit [-m [message]]
  • 更多命令请参考官方文档

文件状态

1570869077617

git的四个文件状态

  • Untracked
    • 不在git管理范围内
  • Unmodified
    • 已被git管理,目前没有被改动
  • Modified
    • 已被git管理,并且发生了改动
  • Staged
    • 改动文件/新增文件被合入commit中(文件只会在这里存续一瞬间,完成commit之后立即转入Unmodified)

Ref

  1. git官方文档