q我和cue一样吗,漫话:如何给女朋友解释什么是git和github?举例说明

本文经授权转载自漫话编程(ID:mhcoding)周末,我正在家里看《最强大脑》,女朋友在一旁刷手机,相安无事。谁知道,刚过了没多久,她突然问我:版本控制想要介

4a81ff7a-98b5-4c4c-bb88-fabfe2ad439e~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=IYqQuFM6reXBHP%2FbKISXemXFsio%3D

297a4ba1b2584f66989d71f0efc8570c~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=Yco5SazT%2BXGQjejKo77odjWCrZ0%3D

本文经漫画编程(ID:mhcoding)授权转载。

周末我在家看《最强大脑》,而我女朋友则在玩手机,一切都很好。不久之后,她突然问我:

83a00bce4f0241eb96599b969952b1b9~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=OUhiec2VWGw5ea2OZvZoePkcwJQ%3D

66ade412b2584682aa230c296c63a942~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=iNoyh8DVjur8bBUThJufWiQT52Y%3D

73e74ab4fdf443e9ba72382a1a6774ef~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=YoXNB%2FVfpeMPXvu%2FgVRW%2F3hl0iw%3D

351c0a703d10435ea653629880fd8547~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=mJWssUNZTJBwDq%2Fv4EKM%2Fnuui3M%3D

ba5a7a67d75d4189926f424fe8e3f032~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=FWM%2FmVLMI3XAyW%2FC%2F%2F1IVUAVG80%3D

889f316142b94717a59ddbdbcf3c8102~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=0Hxx6Cd4e6e%2BGjjaWPR5F1mYPPU%3D

a0f778a33c0f43299ce49aaf673f9c11~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=BpF6%2BIOFOM3Oj3GR9Y1BpEG5s1I%3D

647c1af1d84d4325ae3afcfeb535b15a~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=u5HGEnseSMUfHSrZ2bI%2BxFcWEj4%3D

版本控制

如果要介绍什么是GitHub,就需要介绍什么是Git。如果要介绍什么是Git,就不得不提到版本控制。

我们知道,如果多台计算机在同一个局域网中,它们就可以共享局域网文件。共享者可以通过设置与其他人共享文件,以便他们可以读取和修改文件。

59e0aa9ee0864da9b10fd609d13e7da4~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=dzuVJQCzUqJs%2BU3jaN6PjQSCGxE%3D

如果多个人需要修改同一个共享文件怎么办?假设A共享一个文件夹,其中包含三个文件:mhcoding1.png、mhcoding2.png和mhcoding3.png。 B和C需要修改这个文件。

B 和C 各自将mhcoding 文件夹复制到自己的计算机上并进行更改。完成更改后,您需要上传更改。 B 首先进行了更改,然后上传了自己的文件来覆盖A 的共享。随后,C也完成了修改并上传了修改内容。这样,C就覆盖了B的更改。

为了解决上面的问题,我们需要一种方式来提醒C,当我们要上传文件时,告诉它应该考虑到B已经更改了文件。

更好的方法是使用版本控制。

版本控制系统允许团队成员随时修改任何文件而无需担心。版本控制系统还可以帮助通知您冲突的文件更改,并自动合并多个成员所做的更改。

版本控制还允许您返回并查看特定文件的先前版本中的内容,或者查看特定更改时发生的更改。非常适合团队协作。

0e892b5bb3a44f74a85813c615e06f8e~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=GegfxCNJW%2Bt%2B7naH9WR3j4cPZrI%3D

4b3d85e3dd914e8a87f0c9bd3e3a9faf~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=qBPlFZQ7PMxN7VD9e2CgnxEQKOw%3D

e57eab197bb34d8c91232e09d9c05235~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=N7AvsfIw8OfBlcradiJW1p%2BLXas%3D

a3a0d8054f974fa0b3b4f999b2fb4208~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=fLWI9tDchkNJGVT%2BlBcYdeKn2Yo%3D

版本控制方式

本地版本控制系统

许多人习惯于复制整个项目目录并保存不同的版本,重命名它们以指示差异并添加备份时间。这样做的唯一优点是简单。然而,也有很多缺点。工作目录可能会变得混乱,如果您丢失了错误的文件并且数据丢失,恢复将变得不可逆转。

b92eda9b88ad4a3ba038c7c2b197165a~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=wBwTagkVL3U3kV%2F2wnNrX5R5iOw%3D

为了解决这个问题,人们很早就开发了很多本地版本控制系统。他们中的大多数使用某种简单的数据库来记录文件先前更新之间的差异。

95e3c995c0974ff381aab138520d1eec~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=UcZupxMCLkpMohLaS1k%2FU1gQAYc%3D

集中版本控制系统

然后人们面临另一个问题。这是关于来自不同系统的开发人员如何协作。结果是一个集中的版本控制系统。

这种类型的系统有一个存储所有文件修订的中央服务器,协作人员可以通过客户端连接到该服务器以获取最新文件或发送更新。

8a41dd5204704ec4be774e7499f4d86a~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=FV3k4AXKA7IZghRzkFOZCaKYHCs%3D

这种方法具有许多优点,特别是与老式的本地版本相比。现在,每个人都可以了解项目中其他人正在做什么。管理员还可以轻松控制每个开发人员的权限,让管理变得更加轻松。

分布式版本控制系统

中心化最明显的缺点是中心服务器的单点问题。如果中央服务器停机一小时,那么在此期间没有人可以发送更新,也没有人可以进行协作。

如果中央服务器磁盘发生故障并且未进行备份,或者未及时进行备份,则您将面临丢失数据的风险。

这就是分布式版本控制系统发挥作用的地方。在此类系统中,客户端不仅提取最新版本的文件快照,而且还完整镜像代码仓库。这样,如果用于协作的服务器发生故障,您可以稍后使用镜像本地仓库进行恢复。因为每一次提取操作实际上都是对代码仓库的完整备份。

d952826d20164e8889c4c0818ce53931~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=9z3gc1MY00c2ulDgtbARlv7Hmus%3D

24ccf989950f4d598f8530f7d49107d6~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=I2giC9tdp0wX4OLZ7ovM%2BQ65djQ%3D

e3784896ea2b43439faf9248f9a717a0~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=Ry%2BfONpRWbdt3pvfScK4UqoffNg%3D

git

Git其实就是我前面介绍的分布式版本控制软件,它有以下几个特点。

直接记录快照而不是差异比较。大多数操作仅添加数据,因此它们是在本地执行的。

be911d64fec906604d18aeea646~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=3lYBajG0an%2FOVrvcO0RrSIBkVT4%3D” alt=”ffd97be911d64fec906604d18aeea646~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=3lYBajG0an%2FOVrvcO0RrSIBkVT4%3D” />
程序员是比较典型的需要团队协作的职业,大多数情况下,都是需要多个程序员同时开发同一个项目的,就好像多个程序员要同时修改一份Word文档一样。所以,Git是很多程序员的必备工具。
bcc55b40260f466489c0cad9f2743c0a~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=T4uBRQalkLSGJUImdadlObuBdZ4%3D
a7d5fa0a367047749b993670846ee8bb~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=i3nrXXkuqZZPHRxMdSeaOWaV7hI%3D
c8ad312dca1d42efbb641335500e5c7e~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=YNAemIfm%2BlP0EtsfgteX0vj1gcs%3D
GitHub
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名GitHub。
84929d3fe82d4975bf9238f80b52fbe9~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=MHqK8mSXqgf%2FbCo%2FKSOUVQ4ey5Y%3D
所谓托管平台,也就是说他可以用于存放文件。只不过上面的文件都是可以公开被访问到的。
GitHub是通过Git进行版本控制的软件源代码托管服务,并且,GitHub还引入了一些社交属性。号称是世界上最大的程序员(同性)交友网站。
简单的说,在GitHub上面,你可以提交你自己写的代码(发微博)、关注(粉)某人、关注(赞)某个项目、添加评论、Fork(转发)一个项目来自己修改,这些功能和微博都是一样的,只是将我们的吐槽换成了由各种编程语言写的代码。我们平时见到的大部分开源代码也都是挂在上面的。
最近比较火的996icu项目我们说他有10多万的Star,就是说由10W+的人关注了这个项目。
aca42581d9ff4ee4881947d0d3c4824d~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=sfVo%2B3kiNb%2FQc1aPUOiKaAuxx3o%3D
00b18d6fb98c440da3476dc51587c68a~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=IWMYuAiKuqiyAgNH1TyClnqT%2Fus%3D
975000c6c10645b9af8e7d7576c13093~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=OYrKkeVZWB1J%2BjQM9j21xthtTvI%3D
GitHub上那些奇葩”项目”
Dress – 女装大佬聚集地
有129名贡献者在这个名为Dress的项目里集结,上传了数千张女装照,收获了8000余颗星。
地址:https://github.com/komeiji-satori/Dress
Thanos – 灭霸命令
Thanos.sh是一个开源的个灭霸命令,可随机删除电脑上一半文件。
84cba972a4bf4f29879230f3f1461405~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=fcueLCaHbABN3o%2FEL0UdcwUs%2Bvs%3D
地址:https://github.com/hotvulcan/Thanos.sh
nocode – 一行代码都没有
这是一个Issue比项目更精彩的项目,项目中一行代码都没有,Issue中各种装逼。
2a8f83fdf73f4ca79bea55eb0a50a981~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=ckUWZSy%2Fr4D77%2BfYr35tZA0XynU%3D
想问下,Star这个项目的2.7万人是有多无聊???
地址:https://github.com/kelseyhightower/nocode
programmer-job-blacklist 码农找工作黑名单
地址:https://github.com/shengxinjing/programmer-job-blacklist
hangzhou_house_knowledge 杭州买房攻略
地址:https://github.com/houshanren/hangzhou_house_knowledge
howmanypeoplearearound 通过 Wi-Fi 信号估计附近有多少人
地址:https://github.com/schollz/howmanypeoplearearound
07a4972d9b284c5583536f71dfb96296~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=latRg1%2B6aUvYxehooXPlbIliE88%3D
da612761f572464f9e647a0ed6155bb5~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=qcEciBjM2leBefE0%2F5yMcIFCzCI%3D
8f8e130e1c444c77bbdb90bb44736684~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=unZ5HBy54nQr9J0bHn%2F3tvSvQwc%3D
b923b53117ed43509283f12062bf525f~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717757712&x-signature=bnikuMUf1PVaCQE5151CKmt%2FVD0%3D
参考资料:
https://git-scm.com/book/zh/v1/
https://www.jianshu.com/p/b2ad5d9daa23
https://www.zhihu.com/question/23498424

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/83029.html

(0)
小条的头像小条
上一篇 2024年5月31日 下午6:54
下一篇 2024年5月31日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注