在这个系列的介绍篇中,咱们学习到了谁应该使用 Git,以及 Git 是用来作什么的。今天,咱们将学习如何克隆公共 Git 仓库,以及如何提取出独立的文件而不用克隆整个仓库。前端
因为 Git 如此流行,于是若是你可以至少熟悉一些基础的 Git 知识也能为你的生活带来不少便捷。若是你能够掌握 Git 基础(你能够的,我发誓!),那么你将可以下载任何你须要的东西,甚至还可能作一些贡献做为回馈。毕竟,那就是开源的精髓所在:你拥有获取你使用的软件代码的权利,拥有和他人分享的自由,以及只要你愿意就能够修改它的权利。只要你熟悉了 Git,它就可让这一切都变得很容易。linux
那么,让咱们一块儿来熟悉 Git 吧。git
读和写github
通常来讲,有两种方法能够和 Git 仓库交互:你能够从仓库中读取,或者你也可以向仓库中写入。它就像一个文件:有时候你打开一个文档只是为了阅读它,而其它时候你打开文档是由于你须要作些改动。web
本文仅讲解如何从 Git 仓库读取。咱们将会在后面的一篇文章中讲解如何向 Git 仓库写回的主题。浏览器
Git 仍是 GitHub?工具
一句话澄清:Git 不一样于 GitHub(或 GitLab,或 Bitbucket)。Git 是一个命令行程序,因此它就像下面这样:gitlab
$ git
学习
usage: Git [--version] [--help] [-C <path>]
spa
[-p | --paginate | --no-pager] [--bare]
[--Git-dir=<path>] <command> [<args>]
因为 Git 是开源的,因此就有许多聪明人围绕它构建了基础软件;这些基础软件,包括在他们本身身边,都已经变得很是流行了。
个人文章系列将首先教你纯粹的 Git 知识,由于一旦你理解了 Git 在作什么,那么你就无需关心正在使用的前端工具是什么了。然而,个人文章系列也将涵盖经过流行的 Git 服务完成每项任务的经常使用方法,由于那些将多是你首先会遇到的。
安装 Git
在 Linux 系统上,你能够从所使用的发行版软件仓库中获取并安装 Git。BSD 用户应当在 Ports 树的 devel 部分查找 Git。
对于闭源的操做系统,请前往其项目官网[1],并根听说明安装。一旦安装后,在 Linux、BSD 和 Mac OS X 上的命令应当没有任何差异。Windows 用户须要调整 Git 命令,从而和 Windows 文件系统相匹配,或者安装 Cygwin 以原生的方式运行 Git,而不受 Windows 文件系统转换问题的羁绊。
Git 下午茶
并不是每一个人都须要马上将 Git 加入到咱们的平常生活中。有些时候,你和 Git 最多的交互就是访问一个代码库,下载一两个文件,而后就不用它了。以这样的方式看待 Git,它更像是下午茶而非一次正式的宴会。你进行一些礼节性的交谈,得到了须要的信息,而后你就会离开,至少接下来的三个月你再也不想这样说话。
固然,那是能够的。
通常来讲,有两种方法访问 Git:使用命令行,或者使用一种神奇的因特网技术经过 web 浏览器快速轻松地访问。
假设你想要给终端安装一个回收站,由于你已经被 rm 命令毁掉太屡次了。你可能据说过 Trashy ,它称本身为「理智的 rm 命令中间人」,也许你想在安装它以前阅读它的文档。幸运的是,Trashy 公开地托管在 GitLab.com[2]。
Landgrab
咱们工做的第一步是对这个 Git 仓库使用 landgrab 排序方法:咱们会克隆这个完整的仓库,而后会根据内容排序。因为该仓库是托管在公共的 Git 服务平台上,因此有两种方式来完成工做:使用命令行,或者使用 web 界面。
要想使用 Git 获取整个仓库,就要使用 git clone 命令和 Git 仓库的 URL 做为参数。若是你不清楚正确的 URL 是什么,仓库应该会告诉你的。GitLab 为你提供了 Trashy[3] 仓库的用于拷贝粘贴的 URL。
你也许注意到了,在某些服务平台上,会同时提供 SSH 和 HTTPS 连接。只有当你拥有仓库的写权限时,你才可使用 SSH。不然的话,你必须使用 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 中,能够在浏览器的右侧找到并不显眼的下载按钮。
仔细挑选
另一种从 Git 仓库中获取文件的方法是找到你想要的文件,而后把它从仓库中拽出来。只有 web 界面才提供这种方法,本质上来讲,你看到的是别人的仓库克隆;你能够把它想象成一个 HTTP 共享目录。
使用这种方法的问题是,你也许会发现某些文件并不存在于原始仓库中,由于完整形式的文件可能只有在执行 make 命令后才能构建,那只有你下载了完整的仓库,阅读了 README 或者 INSTALL 文件,而后运行相关命令以后才会产生。不过,假如你确信文件存在,而你只想进入仓库,获取那个文件,而后离开的话,你就能够那样作。
在 GitLab 和 GitHub 中,单击文件连接,并在 Raw 模式下查看,而后使用你的 web 浏览器的保存功能,例如:在 Firefox 中,“文件” > “保存页面为”。在一个 GitWeb 仓库中(这是一个某些更喜欢本身托管 git 的人使用的私有 git 仓库 web 查看器),Raw 查看连接在文件列表视图中。
最佳实践
一般认为,和 Git 交互的正确方式是克隆完整的 Git 仓库。这样认为是有几个缘由的。首先,可使用 git pull 命令轻松地使克隆仓库保持更新,这样你就没必要在每次文件改变时就重回 web 站点得到一份全新的拷贝。第二,你碰巧须要作些改进,只要保持仓库整洁,那么你能够很是轻松地向原来的做者提交所作的变动。
如今,多是时候练习查找感兴趣的 Git 仓库,而后将它们克隆到你的硬盘中了。只要你了解使用终端的基础知识,那就不会太难作到。还不知道基本的终端使用方式吗?那再给多我 5 分钟时间吧。
终端使用基础
首先要知道的是,全部的文件都有一个路径。这是有道理的;若是我让你在常规的非终端环境下为我打开一个文件,你就要导航到文件在你硬盘的位置,而且直到你找到那个文件,你要浏览一大堆窗口。例如,你也许要点击你的家目录 > 图片 > InktoberSketches > monkey.kra。
在那样的场景下,文件 monkeysketch.kra 的路径是:$HOME/图片/InktoberSketches/monkey.kra。
在终端中,除非你正在处理一些特殊的系统管理员任务,你的文件路径一般是以 $HOME 开头的(或者,若是你很懒,就使用 ~ 字符),后面紧跟着一些列的文件夹直到文件名自身。
这就和你在 GUI 中点击各类图标直到找到相关的文件或文件夹相似。
若是你想把 Git 仓库克隆到你的文档目录,那么你能够打开一个终端而后运行下面的命令:
$ git clone https://gitlab.com/foo/bar.git
$HOME/文档/bar.clone
一旦克隆完成,你能够打开一个文件管理器窗口,导航到你的文档文件夹,而后你就会发现 bar.clone 目录正在等待着你访问。
若是你想要更高级点,你或许会在之后再次访问那个仓库,能够尝试使用 git pull 命令来查看项目有没有更新:
$ cd $HOME/文档/bar.clone
$ pwd
bar.clone
$ git pull
到目前为止,你须要初步了解的全部终端命令就是那些了,那就去探索吧。你实践得越多,Git 掌握得就越好(熟能生巧),这是重点,也是事情的本质。
via: https://opensource.com/life/16/7/stumbling-git
做者:Seth Kenlon[4] 译者:ChrisLeeGit[5] 校对:wxy[6]
本文由 LCTT[7] 原创翻译,Linux中国[8] 荣誉推出
[1]: https://git-scm.com/download[2]: https://gitlab.com/trashy/trashy[3]: https://gitlab.com/trashy/trashy.git[4]: https://opensource.com/users/seth[5]: https://github.com/chrisleegit[6]: https://github.com/wxy[7]: https://github.com/LCTT/TranslateProject[8]: https://linux.cn/