Git 系列(一):什么是 Git

2022-12-20 0 1,097

热烈欢迎写作本系列产品关于如何采用 Git 版控制技术的讲义!透过责任编辑的如是说,你将会了解到 Git 的商业用途及谁该采用 Git。

假如你刚迈入开放源码的当今世界,你很有可能会碰到一些在 Git 上代销标识符或是发布采用版本的开放源码应用软件。实际上,无论你晓得是否,你都在采用如前所述 Git 进行版管理的应用软件:Linux Mach(即使你没有在智能手机或是笔记本电脑上采用 Linux,你正在出访的中文网站也是运转在 Linux 系统上的),Firefox、Chrome 等其它许多项目都透过 Git 标识符库和当今全世界开发人员共享资源她们的标识符。

换个视角来说,你是否实际上透过 Git 就能和他们共享资源你的标识符?你是否能在家中或是企业里私营化的采用 Git?你必须要透过三个 GitHub 帐号来采用 Git 吗?为甚么要采用 Git 呢?Git 的竞争优势又是甚么?Git 是我惟一的选择吗?这对 Git 所有的疑点单厢把他们搞的一脑蓖麻油。

因此,忘掉你以前知晓的 Git,让他们重新走近 Git 当今世界的正门。

Git 系列(一):什么是 Git

甚么是版控制技术?

Git 首先是三个版控制技术。那时市售有许多相同的版控制技术:CVS、SVN、Mercurial、Fossil 当然还有 Git。

许多像 GitHub 和 GitLab 这样的服务项目是以 Git 为基础的,但是你也能只采用 Git 而无须采用其它附加的服务项目。这意味著你能以专有或是专有的方式来采用 Git。

假如你曾和他们有过任何电子零件文档方面的密切合作,你就会晓得现代版管理的工作业务流程。已经开始是很单纯的:你有三个原初的版,你把这个版发送到你的同僚,她们在转交到的版上做了些修正,那时我有三个版了,接着她们把他们手里修正过的版发回来给你。你把她们的修正分拆到你手里的版中,那时三个版又分拆成三个新一代的版了。

接着,你修正了你手里新一代的版,同时,你的同僚也修正了她们手里分拆前的版。那时我有 3 个不同的版了,分别是分拆后新一代的版,你修正后的版,你同僚手里继续修正过的版。自此,我的版管理工作已经开始显得愈来愈纷乱了。

正像 Jason van Gumster 在他的文章中指出 即使是艺术家也需要版控制[1],而且已经在个别人那里发现了这种趋势变化。无论是艺术家还是科学家,开发三个某种实验版是并不鲜见的;在你的项目中,可能有某个版大获成功,把项目推向三个新的高度,也可能有某个版惨遭失败。因此,最终你不可避免的会创建出一堆名为project_justTesting.kdenlive、project_betterVersion.kdenlive、project_best_FINAL.kdenlive、project_FINAL-alternateVersion.kdenlive 等类似名称的文档。

无论你是修正三个 for 循环,还是一些单纯的文本编辑,三个好的版控制技术单厢让我们的生活更加的轻松。

Git 快照

Git 能为项目创建快照,并且存储这些快照为惟一的版。

假如你将项目带领到了三个错误的方向上,你能回退到上三个正确的版,并且已经开始尝试另三个可行的方向。

假如你是和别

Git 并不是魔法,因此冲突还是会发生的(“你修正了某文档的最后一行,但是我把这行整行都删除了;他们怎样处理这些冲突呢?”),但是总体而言,Git 会为你保留了所有更改的历史版,甚至允许并行版。这为你保留了以任何方式处理冲突的能力。

分布式 Git

在相同的机器上为同三个项目工作是一件复杂的事情。因为在你已经开始工作时,你想要获得项目的新一代版,接着此基础上进行修正,最后向你的同僚共享资源这些改动。现代的方法是透过笨重的在线文档共享资源服务项目或是老旧的电邮附件,但是这两种方式都是效率低下且容易出错。

Git 天生是为分布式工作设计的。假如你要参与到某个项目中,你能克隆clone该项目的 Git 仓库,接着就像这个项目只有你本地三个版一样对项目进行修正。最后采用一些单纯的命令你就能拉取pull其它开发人员的修正,或是你能把你的修正推送push给别人。那时不用担心谁手里的是新一代的版,或是谁的版又存放在哪里等这些问题了。全部人都是在本地进行开发,接着向共同的目标推送或是拉取更新。(或是不是共同的目标,这取决于项目的开发方式)。

Git 界面

最原初的 Git 是运转在 Linux 终端上的应用应用软件。然而,得益于 Git 是开放源码的,并且拥有良好的设计,当今全世界的开发人员都能为 Git 设计相同的出访界面。

Git 完全是免费的,并且已经打包在 Linux,BSD,Illumos 和其它类 Unix 系统中,Git 命令看起来像这样:

$ gitversion

git version 2.5.3

可能最著名的 Git 出访界面是如前所述网页的,像 GitHub、开放源码的 GitLab、Savannah、BitBucket 和 SourceForge 这些中文网站都是如前所述网页端的 Git 界面。这些站点为面向公众和面向社会的开放源码应用软件提供了最大限度的标识符代销服务项目。在一定程度上,如前所述浏览器的图形界面(GUI)能尽量的减缓 Git 的学习曲线。下面的 GitLab 界面的截图:

Git 系列(一):什么是 Git

再者,第三方 Git 服务项目提供商或是独立开发人员甚至能在 Git 的基础上开发出不是如前所述 HTML 的定制化前端界面。此类界面让你能不用打开浏览器就能方便的采用 Git 进行版管理。其中对用户最透明的方式是直接集成到文档管理器中。KDE 文档管理器 Dolphin 能直接在目录中显示 Git 状态,甚至支持提交,推送和拉取更新操作。

Git 系列(一):什么是 Git

Sparkleshare[2]采用 Git 作为其 Dropbox 式的文档共享资源界面的基础。

Git 系列(一):什么是 Git

想了解更多的内容,能查看 Git wiki[3],这个(长长的)页面中展示了许多 Git 的图形界面项目。

谁应该采用 Git?

就是你!他们更应该关心的问题是甚么时候采用 Git?和用 Git 来干嘛?

我应该在甚么时候采用 Git 呢?我要用 Git 来干嘛呢?

想更深入的学习 Git,他们必须比平常考虑更多关于文档格式的问题。

Git 是为了管理源标识符而设计的,在大多数编程语言中,源标识符就意味者一行行的文本。当然,Git 并不晓得你把这些文本当成是源标识符还是下一部伟大的美式小说。因此,只要文档内容是以文本构成的,采用 Git 来跟踪和管理其版就是三个很好的选择了。

但是甚么是文本呢?假如你在像 Libre Office 这类办公应用软件中编辑一些内容,通常并不会产生纯文本内容。因为通常复杂的应用应用软件单厢对原初的文本内容进行一层封装,就如把原初文本内容用 XML 标记语言包装起来,接着封装在 Zip 包中。这种对原初文本内容进行一层封装的做法能保证当你把文档发送到他们时,她们能看到你在办公应用软件中编辑的内容及特定的文本效果。奇怪的是,虽然,通常你的需求可能会很复杂,就像保存Kdenlive[4] 项目文档,或是保存从 Inkscape[5] 导出的SVG文档,但是,实际上采用 Git 管理像 XML 文本这样的纯文本类容是最单纯的。

假如你在采用 Unix 系统,你能采用 file 命令来查看文档内容构成:

$ file~/path/to/myfile.blah

myfile.blah: ASCII text

$ file~/path/to/differentfile.kra:Zip data (MIME type “application/x-krita”)

假如还是不确定,你能采用 head 命令来查看文档内容:

$ head~/path/to/myfile.blah

假如输出的文本你基本能看懂,这个文档就很有可能是文责任编辑件。假如你实际上在一堆乱码中偶尔看到几个熟悉的字符,那么这个文档就可能不是文责任编辑件了。

准确的说:Git 能管理其它格式的文档,但是它会把这些文档当成二进制大对象(blob)。两者的区别是,在文责任编辑件中,Git 能明确的告诉你在这三个快照(或是说提交)间有 3 行是修正过的。但是假如你在三个提交commit之间对一张图片进行的编辑操作,Git 会怎么指出这种修正呢?实际上,因为图片并不是以某种能增加或删除的有意义的文本构成,因此 Git 并不能明确的描述这种变化。当然我个人是非常希望图片的编辑能像把文本“<sky>丑陋的蓝绿色</sky>”修正成“<sky>漂浮着蓬松白云的天蓝色</sky>”一样的单纯,但是实际上图片的编辑并没有这么单纯。

经常有人在 Git 上放入 png 图标、电子零件表格或是业务流程图这类二进制大型对象(blob)。尽管,他们晓得在 Git 上管理此类大型文档并不直观,但是,假如你需要采用 Git 来管理此类文档,你也并不需要过多的担心。假如你参与的项目同时生成文责任编辑件和二进制大文档对象(如视频游戏中常见的场景,这些和源标识符同样重要的图像和音频材料),那么你有两条路能走:要么开发出你自己的解决方案,就如采用指向共享资源网络驱动器的引用;要么采用 Git 插件,如 Joey Hess 开发的git annex[6],以及 Git-Media[7] 项目。

你看,Git 真的是三个任何人都能采用的工具。它是你进行文档版管理的三个强大而且好用工具,同时它并没有你已经开始认为的那么可怕。

via: https://opensource.com/resources/what-is-git

作者:Seth Kenlon [8] 译者:cvsher[9] 校对:wxy[10]

责任编辑由 LCTT[11] 原创编译,Linux中国[12] 荣誉推出

[1]: https://opensource.com/life/16/2/version-control-isnt-just-programmers

[2]: http://sparkleshare.org/

[3]: https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools#Graphical_Interfaces

[4]: https://opensource.com/life/11/11/introduction-kdenlive

[5]: http://inkscape.org/

[6]: https://git-annex.branchable.com/

[7]: https://github.com/alebedev/git-media

[8]: https://opensource.com/users/seth

[9]: https://github.com/cvsher

[10]: https://github.com/wxy

[11]: https://github.com/LCTT/TranslateProject

[12]: https://linux.cn/

推荐文章

点击标题或输入文章 ID 直达该文章

1235 Git 与 Github 逐渐成为开放源码当今世界的协作开发首选

3719 探索 .git 目录,让你真正理解 git

4207 Linux 开发人员如何看待 Git 和 Github?

4217 你应该晓得的基础 Git 命令

Git 系列(一):什么是 Git

将文章分享给朋友是对他们最好的赞赏!

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务