HTWAAG第一周@天天向上组

小组信息
所在组名:天天向上
本组组长:digman
本组其他成员:丰盛姐 慧娟 夜影随风
本组口号:每天成长 每天学习


01号组员:夜影随风
学习目标:学会用git写作
自己擅长:家具行业

02号组员:丰盛姐
学习目标:学会用git写作
自己擅长:心理咨询 个人成长心理教练

03号组员:慧娟
学习目标:学习加实践才出成果,学会用git写作
自己擅长:教育 教育心理学

04号组员:digman
学习目标:通过极客写作任务,搭建自己的个人知识输出系统
自己擅长:企业信息化实施、财务管理、审计等方面的相关业务沟通。


写在前面,每个人都用自己的理解完成了作业,在进行作业合并时非常为难,就把所有的作业内容都列出来,显得内容较多,如有浏览不便,还请见谅。
  下一次作业时尝试共同编辑任务,尝试小组共同创作的过程。


小组作业


丰盛姐 1-6问题的作业

提交者:@王一一(1--6问题答案)

  1. 用 500 字说说 Git 的前生今世。
    Git是目前世界上最先进的分布式版本控制系统,出自世界最大的免费开源操作系统Linux之父Linus之手,随着Linux内核代码库日益壮大,Linus 先后尝试自己管理、集中托管、商业软件的版本控制等方法,但最终都不是很如人意,,Linus于是选择了商业控制版本Bitkeeper作为Linux内核的代码管理工具。2005年有人尝试突破Bitkeeper的协议,激怒了Bitkeeper的东家,后果就是收回Linux社区的使用权,Linus藐视其威胁,神迹般地在两周之内开发出Git,后来这个系统由Github公司推广到全世界,现在是大多数程序员托管自己代码和开源项目的集中地。

git 的发展个人理解可划分为三个时段:

远古的石器时代 -- 无版本控制系统,协作困难开化的近代 --集中式版本控制系统 主要有CVS和SVN成熟的现代 --分布式版本控制系统 主要有BitKeeper和Git

一、远古的石器时代
在石器时代,人们一般用相对原始,简陋的工具来解决问题,完成工作内容。这个时代在1985年CVS出现之前。 人们在修改文档和程序代码时,通过不断的复制,冗余存储,多人协作困难,效率低下。对于文本和源码的差异比较用diff 和patch来解决,代表人物是大名鼎鼎的Linus Torvalds(Linux之父)
二、开化的近代
这个时代在1985年,CVS(Concurrent Versions System)由荷兰阿姆斯特丹VU大学的Dick Grune教授实现,引入版本控制概念解决修改文档的复制存储,多人协作困难的问题。但由于CVS存在问题:建立里程碑或分支时缺乏效率,服务器端文件越多,速度越慢。因为缺乏对合并的追踪从而导致重复合并,引发严重冲突,等等原因。
在2000年出现SVN(Subversion)——集中式版本控制系统,逐步取代CVS。SVN 有多个优点: 从BDB(简单的关系型数据库)到FSFS(文件数据库)的转变。FSFS相对于BDB具有更高的稳定性、免维护性,以及实现的可视性。利用轻量级拷贝,SVN在不同的名字空间下创建不同的目录实现里程碑和分支的创建,轻松地解决了CVS中存在的里程碑、分支创建速度慢又不可见的问题。使用SVN创建里程碑和分支只在眨眼之间。
SVN 也存在的多个问题,例如:集中式版本控制系统,即一个项目只有唯一的一个版本库与之对应,所有的项目成员都通过网络向该服务器进行提交。单点故障是集中式版本控制的死穴,并由此带来数据备份和数据恢复的管理成本。此外集中式版本控制系统还存在着提交瓶颈。

  1. 举例说明集中式与分布式版本控制的区别是什么?
    比如说我和网上的几个好哥们共同写一本书。
    集中式的版本控制就是说我们所有人的写作内容都存放在某一个人的电脑里面,当我开始写作的时候,我需要访问存放底稿的电脑,我写完了,要上传修改后的底稿到这台电脑中。别人也是一样的。
    分布式的版本控制就是我们所有人的电脑上都存放一份这本书的内容,在自己电脑随时修改,改完后可以和对方交换内容,更新内容,更新后我们人就同时有一份完整的书籍底稿。
    集中式需要保持联网,而且如果服务器坏掉,数据丢失风险较大;分布式可以线下独立,如果电脑当掉,可以从别人那里取得完整的数据。

  2. 用浅显易懂的语言说明“工作区”、“暂存区”与“版本区”的含义与互相关系是什么?
    工作区是文件系统中存在的一个目录,这个目录是可以看到的,比如说其中一个目录叫做“产品经理”,这个是我用来产品经理所有文字;工作区展示的产品经理这本书的章节结构(分支的展示),其中里面有个隐藏目录.git是版本库。
    版本库打开版本库看到的是工作区的处理后台,我在后台做过编辑并commit之后,更改的内容就会展示在工作区。
    暂存区是当我打开版本库里面的一个分支进行修改的时候呈现的一种状态,我编辑产品经理这本书的第一章的时候第一章就变成了暂存区。当我保存commit的时候,暂存区的内容就清空了。

  3. 举例演示如何让远程库与本地版本同步?
    比如我在写一本《唤醒内在动力》的书籍,于是我在本地建立了一个命名为【内在动力】的库,这个库是本地库。为了安全和协同,我把本地库的内容上传了github网站进行托管,github上就是我的远程库。
    这个远程库可以通过clone命令供我在其他地点或者其他协作者下载到本地进行修改编辑。修改完的内容还可以上传到远程库中。

  4. 如何运用分支管理实现多人协作?
    我和几个朋友合作写一本书,当我们多个人编辑同一个目录的时候,容易乱,我们通过分支的功能,每个人从中选择一个章节,先各自编辑,当我们编辑完成之后,把某个章节的的内容并到总目录中,就可以拼接成一个完整的数据。类似于我们从一本书中挑走几个章节分开来写然后拼凑起来,而不是我们都编写统一的全书章节。

  5. Git和自己的关系可能是什么,至少提出5种?
    使用git管理自己写作的东西:代码、文字等
    参与git中的开源项目,和别人共同完成某个任务
    使用git来实现团队内部的沟通和协助,任务的推进
    使用别人开源的git库内容方便地创建自己的库
    观摩学习别人放在github上的优质内容
    使用git和别人进行互动,社交
    在git上开发和展示自己的课程,事实在线教学


慧娟姐提交的 1、2、7问题作业

问题一:git的前世今生
Git是安装在电脑上的一种管理文件的软件,它是Linux操作系统开发的一个软件。
在介绍Git的前世今生之前,先来普及一下什么是”版本控制系统“。这名词听上去非常专业,实际上也好理解。版本就是指一份文件经过多次修改后,构成了不同的版本,有版本一,版本二,版本三.....,有时面对这些经过不同人或同一个人在不同时间修改过的不同版本的文件,我们不能完全删除,需要暂时保存以备日后需要时对比查看,通常的做法是把每一版本都保存一份在电脑里,这些都是人工操作的。而”版本控制系统“就是电脑里安装好了的一个软件,不需要人工操作,系统自动会保存和记录该文件每一次改动的内容,用户可以非常方便地随时查看。
1991年,芬兰人linus创建了类似Windows的电脑操作系统Linux,这套系统的影响力现在也不亚于Windows了。Linux是免费的开源系统,它的代码系统是对外开放的,全世界的电脑爱好者都可以对它的代码库进行修改,然后把他们编写的代码文件发给Linus,Linus本人再手工合并代码,所以2002年之前Linux的代码库都是手工管理的。
2002年之前没有”版本控制系统“吗?答案是否定的。当时有CVS和SVN这些免费的版本控制系统,但它们都有很大的缺点,速度慢,必须联网才能使用。有一些收费的版本控制系统虽然好用,但是它们的代码系统不对外开放,与Linux的理念不合。
2002年由于代码库发展壮大,人工操作已经很难维续,于是Linus选择了一个商业的版本操作系统BitKeeper,幸运的是,Linux社区获得了免费使用这个系统的权利。
不过好景不长,2005年,由于Linux社区一些技术牛人的违规行为,BitKeeper所属的BitMover公司决定收回Linux社区的免费使用权。
与BitMover公司闹翻之后,Linus决定不再寄人篱下,他发奋图强,仅用两周时间就自己编写了一个分布式版本控制系统,Git就这样诞生了!一个月之后,Linux的代码库就由Git全面接管了。Git迅速成为最流行的最高效的分布式版本控制系统。
2008年,Github网站上线,吸引了无数开源项目在此落户,享受免费的Git管理。

问题二:集中式版本控制系统与分布式版本控制系统的区别
比如我们一个公司的同事一共四人:组长digman, 组员有慧娟、丰盛姐和夜影随风,每人各有一台办公电脑。现在我们四人需要一起合作写一篇文章——《关于git的前世今生》。
我们四人都按自己的理解各自写好了这篇文章,大家把自己的文章初稿都发到digman的电脑里,digman把大家写的内容综合整理和修改后,构成了一篇全面详细的介绍git来龙去脉的文章,即二稿——目前文章的最新版本,现在只存放在digman的电脑里。
在集中式版本控制系统里,如果各位组员想查看并修改这最新版本的文章,只能从组长digman的电脑里调出来后查看和修改。组长的电脑相当于中央服务器,存储了每个人写的初稿和最新版本二稿。所以3位组员的电脑必须与组长的的电脑联网才能协同工作。
在分布式版本控制系统里,每位组员的电脑里都会自动保存最新版本的文章,四台电脑没有主次之分,不需要联网,每位组员可以各自在自己的电脑里查看最新版本的文章并做相应的处理。如果慧娟又修改了最新版本二稿文章,其他三位想看哪些地方做了改动,慧娟只需把修改的部分通过系统发送给digman、丰盛姐和夜影随风,他们就马上能看到修改的内容。

**问题七:给小白看的git 的教程大纲

  • 一、git 简介

    1. 什么叫版本控制系统
  • 2.集中式版本控制系统与分布式版本控制系统

    1. git 的诞生
  • 二、安装git

  • 三、创建版本库

    • 在工作区写文件
    • 添加文件至暂存区
    • 提交文件至分支
    • 文件修改的版本回退
    • 修改的管理和撤销
  • 四、连接中央服务器github网站

    • 1.配置ssh
    • 2.将个人电脑(分支)与github连接
  • 五、分支管理

    • 创建与合并分支
    • 多人协作

六、使用github


夜影随风 提交的 1、2、7问题作业

一、用五百字介绍git的前世今生

git版本控制系统是由Linux之父Linus开发,被誉为继其开发Linux之后的第二个伟大作品。在了解git之前我们要先了解一下什么是版本控制。版本控制是管理数据变更的艺术不管数据是来自同一个人还是不同的人。版本控制系统不但要忠实地记录数据的每一次变更,还要能够帮助还原任何历史改动,以及实现团队的协同工作等功能。为了实现此功能开发者们设计出了以CVS和SVN为代表的集中式版本控制系统即一个项目只有唯一的一个版本库与之对应,所有的项目成员都通过网络向该服务器进行提交。但是这种方式造成了集中式版本控制的死穴——单点故障,并由此带来数据备份和数据恢复的管理成本。此外集中式版本控制系统还存在着提交瓶颈等等各种问题。基于以上问题Linus在1991-2002这十余年间,宁可使用补丁文件和tar包的方式维护代码,也迟迟不愿使用CVS和SVN。2002年Linus顶着开源社区精英们的口诛笔伐,选择了一个商业版本控制系统BitKeeper作为Linux内核的代码管理工具,和CVS/SVN不同,BitKeeper是属于分布式版本控制系统(分布式版本控制系统最大的反传统之处在于,可以不需要集中式的版本库,每个人都工作在通过克隆操作建立的本地版本库中,也就是说每个人都拥有一个完整的版本库。)2005年发生了一件事导致BitMover公司,收回对Linux社区免费使用BitKeeper的授权。迫不得已Linus自己L用了不到两周的时间开发一个分布式版本控制工具。这个工具就是后来大名鼎鼎个GIT。

二、举例说明集中式与分布式版本控制系统的区别是什么?

集中式版本控制比如说我们共同完成一个代码编写任务,我们把写好的代码放在一个服务器里,当我们要修改的时候需要从服务器里下载到自己的电脑上,修改后再上传到服务器上。这样我们之间要保证网络畅通,如果服务器坏掉那么就会面临着数据丢失的风险

分布式版本控制就是我们大家的电脑上都有代码的内容,自己不用去下载就可以在自己的电脑上随时修改,我们可以自由的和别人合并或者是更新代码,这样可以完全在线下完成如果电脑坏掉的话,我们还可以从别人的电脑中重新复制一份完整的数据

三、整理一份小白学习的git教程大纲

1、介绍什么是git

2、和别的版本控制系统的区别

3、git的核心概念和特点

4、git的使用案例

5、git的安装及实际操作方法


digman 提交 1、2、7 问题作业

一、用五百字介绍git的前世今生

本篇文字就是简单的描述一下git的来龙去脉,以自己理解的角度,用自己的语言来描述一下。也是不错的体验。

在cvs与svn集中式版本控制全面使用的时代,依然有很多人很反对集中式版本控制的方式,这其中包括大名鼎鼎的Linus Torvalds(Linux之父)。糟糕的网络传输速度,以及集中式版本控制的存在的代码管理问题,是大家争论焦点。同时linux是一个开源软件体系,经过十几年的发展,全球拥有大量的用户和程序员,如何让大家更好的获取代码,并进行有消息协同是一个有难度的事情。在经过bitkeeper软件事件后,linus花了两周的时间编写出分布式版本控制系统,这就是初级的git!一个月内,linux系统的源码都有git管理了,这么快上线一个软件,还在这么大的项目中进行使用,简直就是奇迹。随着git的发展,它已经成为最流行的分布版本控制系统,大量的开源项目都将自己的代码托管到git版本控制系统当中。依然成为软件行业的标准,甚至有很多人拿git作为个人知识管理系统使用,他的魅力无法阻挡。

二、举例说明集中式与分布式版本控制系统的区别是什么?

集中式版本控制主要特点是集中存放所有资料,所有人的所有变动都更新到中央服务器中。同时所有相关人员想要进行相关浏览和修改,都需要从中央服务器下载最新版资料才能开展工作,所以对网络比较依赖。如何直接修改忘记下载最新版或者网络断掉,整个工作就会受到影响。

而分布式版本控制系统的特点是分布式,相关人员的电脑都是一个关键节点,每一个点都拥有所有的资料和变动记录。所以每个人都可以独立进行改动资料,并且所有的改动都是在完整资料信息的环境下进行的。当有网络时在进行提交更新,此时所有人的信息都更新到一个临时中心服务中,供所有人更新信息。而且有详细的变更记录,解决了我做了什么,你做了什么,你在什么地方做了怎样的变动,这些沟通的信息都自动展示在你的眼前,减少了大量的沟通成本,并且能够保证所有人的资料都是最新的。从这一点来看,分布式的资料安全性要比集中式高很多,而且他的灵活度也很高,不需要专门的管理人员来管理所有人的更新操作,对于提高工作效率有很大的帮助。

打个比方来说,集中式版本控制就像是中央集权国家,所有的财富与美女都向皇帝所代表的中央集中,想要一些资源都需要单独进京面圣,否则干不成事。而分布式版本控制就像是藏富于民的政策,也有中央,但是调停的角色,不是占有。财富分散存放,国家整体抗风险能力强,需要中央出面,中央也能拿得出东西,需要民众出面,人民也能拿得出东西,其乐融融。

三、整理一份小白学习的git教程大纲

给小白提交一个课程大纲

  • 1、git他能帮助我们做什么,他的优势是什么(分布式版本控制)

  • 2、什么是git,什么是github

  • 3、如何使用git来进行分布式版本控制操作

    • 3.1 安装git客户端
    • 3.2 配置git客户端,与远程服务器链接,
    • 3.3 创建本地仓库,并与远程仓库建立连接(空白库和从远程仓库拷贝信息到本地)
  • 4、邀请伙伴一起来玩一次共同创作的游戏吧,写一周的时间记录 ,汇总在一起是一件很有趣的事情。

你可能感兴趣的:(HTWAAG第一周@天天向上组)