Git 系列(二):初步瞭解 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
在 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。
Landgrab
我們工作的第一步是對這個 Git 倉庫使用 landgrab 排序方法:我們會克隆這個完整的倉庫,然後會根據內容排序。由於該倉庫是託管在公共的 Git 服務平臺上,所以有兩種方式來完成工作:使用命令列,或者使用 web 介面。
要想使用 Git 獲取整個倉庫,就要使用 git clone 命令和 Git 倉庫的 URL 作為引數。如果你不清楚正確的 URL 是什麼,倉庫應該會告訴你的。GitLab 為你提供了 Trashy 倉庫的用於複製貼上的 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 譯者:ChrisLeeGit 校對:wxy
相關文章
- git(一):瞭解、學習、安裝gitGit
- 瞭解Git及其使用Git
- Git詳解之二:Git基礎Git
- Git的初步學習Git
- 您可能不瞭解git log的有用技巧 - Git BetterGit
- 初步瞭解AQS是什麼(二)AQS
- git操作之二:git restoreGitREST
- Git 系列之「Git 的誕生」Git
- git reset 命令詳解(二)—— Git 學習筆記 08Git筆記
- TypeScript初步瞭解TypeScript
- Docker初步瞭解Docker
- git 乾貨系列:(二)深入學習之前先理解 git 暫存區Git
- [Git系列] 前言Git
- git簡單明瞭Git
- IntelliJ IDAE git初步試用IntelliJGit
- Git使用系列03-->Git倉庫建立Git
- 面試官:你瞭解git cherry-pick嗎?面試Git
- ActiveMQ的初步瞭解MQ
- Git 系列文章Git
- 【git學習二】git基礎之git管理本地專案Git
- Git 系列(五):三個 Git 圖形化工具Git
- 保姆教程系列:Git 實用命令詳解Git
- Git詳解之一:Git起步Git
- Git詳解之三:Git分支Git
- Git詳解之六:Git工具Git
- git(三):第一次github瞭解使用Github
- 初步瞭解 JS 繼承JS繼承
- 大資料初步瞭解大資料
- Java集合類初步瞭解Java
- iOS-WKWebView 初步瞭解iOSWebView
- git rebase vs git merge詳解Git
- Git詳解之五:分散式GitGit分散式
- Git詳解之七:自定義GitGit
- 圖解Git圖解Git
- git圖解Git圖解
- Git詳解Git
- 【譯】瞭解17.10 GA 中最新的 Git 工具特性Git
- Git新手教程-Git的下載與設定(二)Git