阅读
- 第一部分:什么是 Git?
- 第二部分:Git 入门
- 第三部分:创建你的第一个 Git 仓库
- 第四部分:如何在 Git 中恢复旧版本文件
- 第五部分:3 个 Git 图形化工具
- 第六部分:如何构建你自己的 Git 服务器
- 第七部分:如何使用 Git 管理二进制大对象
在本系列的前言中,我们了解了谁应该使用 Git 以及它的用途。今天我们将学习如何克隆公共 Git 仓库,以及如何在不克隆整个仓库的情况下提取单个文件。
由于 Git 非常流行,如果你至少在基本层面上熟悉它,生活会轻松很多。如果你能掌握基础知识(你可以的,我保证!),那么你将能够下载你需要的一切,甚至可以贡献代码。毕竟,这就是开源的全部意义所在:可以访问构成你运行的软件的代码,可以自由地与他人分享,并且有权随意更改它。只要你对 Git 感到舒适,Git 就能使整个过程变得容易。
所以,让我们开始熟悉 Git。
读取和写入
广义上讲,与 Git 仓库交互有两种方式:你可以从中读取,也可以向其中写入。这就像一个文件:有时你打开文档只是为了阅读它,有时你打开文档是因为你需要进行更改。
在本文中,我们将介绍从 Git 仓库读取。我们将在以后的文章中讨论向 Git 仓库写回的主题。
Git 还是 GitHub?
需要澄清一点:Git 与 GitHub(或 GitLab、Bitbucket)不同。Git 是一个命令行程序,它看起来像这样
$ git
usage: Git [--version] [--help] [-C <path>]
[-p | --paginate | --no-pager] [--bare]
[--Git-dir=<path>] <command> [<args>]
由于 Git 是开源的,许多聪明的人围绕它构建了基础设施,这些基础设施本身也变得非常流行。
我的关于 Git 的文章首先教授纯粹的 Git,因为如果你理解 Git 在做什么,那么你就可以对你正在使用的前端保持漠不关心。但是,我的文章也包括通过流行的 Git 服务完成每项任务的常用方法,因为这可能就是你首先会遇到的情况。
安装 Git
要在 Linux 上安装 Git,请从你的发行版的软件仓库中获取它。BSD 用户应该在 Ports 树的 devel 部分找到 Git。
对于非开源操作系统,请访问 项目网站 并按照说明进行操作。安装完成后,Linux、BSD 和 Mac OS X 命令之间应该没有区别。Windows 用户将必须调整 Git 命令以匹配 Windows 文件系统,或者安装 Cygwin 以原生运行 Git,而不会被 Windows 文件系统约定绊倒。
与 Git 的下午茶
并非我们每个人都需要立即将 Git 融入我们的日常生活。有时,你与 Git 最多的互动是访问代码仓库,下载一两个文件,然后离开。在了解 Git 的过程中,这更像是下午茶,而不是正式的晚宴。你进行一些礼貌的交谈,你获得你需要的信息,然后你就分道扬镳,至少在接下来的三个月内没有再次交谈的打算。
这也没关系。
一般来说,有两种访问 Git 的方式:通过命令行,或者通过任何一种花哨的互联网技术,通过 Web 浏览器提供快速简便的访问。
假设你想在你的终端中安装一个回收站,因为你已经被 rm
命令坑过太多次了。你听说过 Trashy,它自称是 “rm
命令的明智中间人”,并且你想在安装它之前查看它的文档。幸运的是,Trashy 公开托管在 GitLab.com 上。
抢占
我们将使用这个 Git 仓库的第一种方法是一种抢占方法:我们将克隆整个仓库,然后在稍后整理内容。由于该仓库托管在公共 Git 服务上,因此有两种方法可以做到这一点:在命令行上,或通过 Web 界面。
要使用 Git 抓取整个仓库,请使用 git clone
命令和 Git 仓库的 URL。如果你不清楚正确的 URL 是什么,仓库应该会告诉你。GitLab 为你提供了用于 Trashy 的复制粘贴仓库 URL Trashy。
https://open-source.net.cn/sites/default/files/1_gitlab-url.jpg" title="GitLab 显示仓库 URL。" typeof="foaf:Image" width="520" height="135">
你可能会注意到,在某些服务上,同时提供了 SSH 和 HTTPS 链接。只有当你拥有对主机的 SSH 访问权限时才能使用 SSH(许多 Git 托管服务通过允许你上传你的公钥来启用此功能)。否则,你必须使用 HTTPS URL。
一旦你有了正确的 URL,克隆仓库就非常简单了。只需 git clone
URL,并可选择命名要克隆到其中的目录。默认行为是将 git 目录克隆到你的当前目录;例如,'trashy.git' 会作为 'trashy' 放在你的当前位置。我使用 .clone 扩展名作为只读仓库的速记,而 .git 扩展名作为我可以读写的仓库的速记,但这绝不是官方规定。
$ git clone https://gitlab.com/trashy/trashy.git trashy.clone
Cloning into 'trashy.clone'...
remote: Counting objects: 142, done.
remote: Compressing objects: 100% (91/91), done.
remote: Total 142 (delta 70), reused 103 (delta 47)
Receiving objects: 100% (142/142), 25.99 KiB | 0 bytes/s, done.
Resolving deltas: 100% (70/70), done.
Checking connectivity... done.
一旦仓库成功克隆,你就可以像浏览计算机上的任何其他目录一样浏览其中的文件。
获取仓库副本的另一种方法是通过 Web 界面。GitLab 和 GitHub 都以 .zip 文件的形式提供任何仓库的快照。GitHub 有一个大的绿色下载按钮,但在 GitLab 上,请在浏览器窗口的最右侧寻找一个不显眼的下载按钮
https://open-source.net.cn/sites/default/files/1_gitlab-zip.jpg" title="GitLab 的 zip 下载按钮。" typeof="foaf:Image" width="520" height="254">
选择性获取
从 Git 仓库获取文件的另一种方法是找到你想要的文件并直接从仓库中提取它。此方法仅通过 Web 界面支持,这本质上是你查看别人的仓库克隆;你可以将其视为一种 HTTP 共享目录。
使用此方法的问题是,你可能会发现某些文件实际上并不存在于原始 Git 仓库中,因为文件可能只有在 make
命令构建文件后才以完整形式存在,这在你下载仓库、阅读 README 或 INSTALL 文件并运行命令之前不会发生。但是,假设你确定文件确实存在,并且你只想进入仓库,抓取它然后离开,你可以这样做。
在 GitLab 和 GitHub 中,单击 Files 链接以查看文件,在 Raw 模式下查看文件,并使用 Web 浏览器的保存功能,例如在 Firefox 中,文件 > 另存为页面。在 GitWeb 仓库(个人 git 仓库的 Web 视图,一些喜欢自己托管 git 的人使用),Raw 视图链接位于文件列表视图中。
https://open-source.net.cn/sites/default/files/1_webgit-file.jpg" title="在 WebGit 中保存文件。" typeof="foaf:Image" width="519" height="242">
最佳实践
一般来说,克隆整个 Git 仓库被认为是与 Git 交互的正确方式。这有几个原因。首先,使用 git pull
命令很容易保持克隆更新,因此你无需在每次改进时都回到某个网站获取文件的新副本。其次,如果你碰巧自己做了改进,那么如果所有内容都在 Git 仓库中整洁有序,则更容易将这些更改提交给原始作者。
目前,可能只需练习查找有趣的 Git 仓库并将它们克隆到你的驱动器就足够了。只要你了解使用终端的基础知识,那么这并不难做到。不知道终端使用的基础知识?再给我五分钟时间。
终端基础知识
首先要理解的是,所有文件都有一个路径。这很有道理;如果我告诉你在一个普通的非终端日为我打开一个文件,你必须到达该文件在你驱动器上的位置,并且你将通过导航一堆计算机窗口直到到达该文件来做到这一点。例如,也许你会点击你的主目录 > 图片 > InktoberSketches > monkey.kra。
在这种情况下,我们可以说文件 monkeysketch.kra 的路径是 $HOME/Pictures/InktoberSketches/monkey.kra。
在终端中,除非你正在做特殊的系统管理员工作,否则你的文件路径通常会以 $HOME(或者,如果你很懒,只需使用 ~ 字符)开头,后跟直到文件名本身的一系列文件夹。这类似于你在 GUI 中单击的任何图标以到达文件或文件夹。
如果你想将 Git 仓库克隆到你的 Documents 目录中,那么你可以打开终端并运行此命令
$ git clone https://gitlab.com/foo/bar.git $HOME/Documents/bar.clone
一旦完成,你可以打开文件管理器窗口,导航到你的 Documents 文件夹,你会发现 bar.clone 目录在那里等着你。
如果你想更进一步,你可能会在稍后的某个日期重新访问该仓库,并尝试 git pull
以查看项目是否有更新
$ cd $HOME/Documents/bar.clone
$ pwd
bar.clone
$ git pull
目前,这就是你入门所需的所有终端命令,所以去探索吧。你做得越多,你就越擅长,这就是游戏的名称,至少是差不多。
评论已关闭。