在這個系列的介紹篇中,咱們學習到了誰應該使用 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/