在学期间是否遇过作业前後修改出好多个版本,你会以什麽方式命名呢?以我的例子来说,大学作业就是与老师讨论後又被退回来修改,或是与组员之间共同编辑了同份档案,最後已经不清楚哪份才是最终版本,各版本之间的差异又是什麽?
平常我的习惯是把日期放在头当档名,但找截图时实在太乱了QQ
这样的处理方式套用在工程师上,可能会出现以下缺点:
1. 无法得知哪一份才最新档案
2. 共同编辑需加上编辑者名字,若同时进行编辑,可能会有覆盖的情形发生
3. 无法了解每个版本之间的差异,以及备份的原因
4. 无法追踪修改者和修改的内容
种种因素导致工程师合作上的混乱,因此需要程序码管理系统,而好的程序码管理系统会大幅影响到开发效率。
Git 的版本控制系统就是为了解决这样的问题而开发的。
💡 Git 是一种分散式版本的版本控制系统。
版本控制系统(Version Control Stystem)
记录一个或若干个文件的状态变化,并可以随时切换到某个「版本」时候的状态,以便查看特定版本修订情况的系统。
可以清楚地纪录每个档案的拥有者、时间、修改异动。
集中式与分散式
集中式版控系统 (Centralize Version Control)
如:CVS、SVN 和 Perforce
需有一个专用的服务器来管理所有版本的档案,所有的更新都需透过此服务器沟通。
特点:
同步 - 让所有开发者间对档案所做的变更都能够同步,最终得到相同的档案内容。
追溯 - 回到受控档案在变化历史中的任何一个版本,并且明白每个版本间变化的原因、以及究竟做了什麽变动。
备份 - 让所有的受控档案集中保管於档案库中,做为备份也利於备份。
优点:
可以知道专案中的其他人正在做什麽。
管理者可以掌控每个开发者的权限。
比每个用户端只用本机的版本控制系统好管理很多。
缺点:
分散式版本控制系统(Distributed Version Control Systems,简称 DVCSs)
如:Git、Mercurial、Bazaar 和 Darcs
特点:
每个开发者拥各自独立的变更集合,开发者之间可分享自己的变更集合。
可在离线环境(深山、飞机)下正常使用。
重视分支(branch)的支援
Git 是一款版本控制软件,而 GitHub 是一个商业网站,GItHub 的本体是一个 Git 服务器。
记录档案快照 Snapshot,而不是差异
每当提交 commit(注:在 Git 储存目前专案的状态)时,Git 会纪录下所有目前档案的样子,并且参照到这次快照中。 为了讲求效率,只要档案没有变更,Git 不会再度储存该档案,而是直接将上一次相同的档案参照到这次快照中。 Git 把它的资料视为一连串的快照。
大部份的操作皆可在本地端完成
Git 能检查完整性
在 Git 中所有的物件在储存前都会被计算校验码(checksum)并以校验码参照物件。
Git 通常只增加资料
三种状态
Git 专案的三个主要区域
Git 资料夹
工作目录(working directory)
暂存区(staging area)
基本 Git 工作流程
为期 30 天的铁人赛文章,主要都是纪录学习笔记
,透过翻阅书籍、查找资料後整理,也许有些技术方面不够专业,但自学的过程挺有成就感的!?
以下都会是後续文章学习过程所参考的资料:
建好table後,再来就是要建立Controller建立路径来控制更新、删除、取得资料的动作。 在终...
今天的实作内容主要根据教学网站进行。 在Day22时,我们实作了身份验证功能,部分功能要求使用者必须...
前十四天我们快速看过了Vue的语法以及一些基本概念,今天我们要跳一下来看何谓版本控制与git flo...
17King 制造中,订阅一下吧(*´∀`)~♥ 今日影片长度:08 分 36 秒 上集重点条列: ...
前面讲完了物件导向的3大特性,那再来讲讲新手要如何写出好Code 首先对於不同的工程师,我觉得好的程...