-
A1. 附錄 A: Git 在其他環境
- A1.1 圖形介面
- A1.2 Visual Studio 中的 Git
- A1.3 Visual Studio Code 中的 Git
- A1.4 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的 Git
- A1.5 Sublime Text 中的 Git
- A1.6 Bash 中的 Git
- A1.7 Zsh 中的 Git
- A1.8 PowerShell 中的 Git
- A1.9 小結
-
A2. 附錄 B: 在應用程式中嵌入 Git
-
A3. 附錄 C: Git 命令
A1.1 附錄 A:其他環境中的 Git - 圖形介面
如果你通讀了整本書,你已經學會了如何在命令列中使用 Git。你可以處理本地檔案,透過網路連線你的倉庫到其他人的倉庫,並與他人高效協作。但故事並沒有就此結束;Git 通常作為更大的生態系統的一部分使用,而終端並不總是與之互動的最佳方式。現在我們將看看 Git 可以發揮作用的其他一些環境,以及其他應用程式(包括你自己的)如何與 Git 協同工作。
圖形介面
Git 的原生環境是終端。新功能首先出現在終端中,而且只有在命令列下,Git 的全部威力才能完全發揮出來。但純文字並非所有任務的最佳選擇;有時你需要一個視覺化表示,而且有些使用者更習慣於點選式介面。
值得注意的是,不同的介面是為不同的工作流程量身定製的。一些客戶端只暴露了 Git 功能中經過精心挑選的子集,以支援作者認為有效的特定工作方式。從這個角度來看,這些工具都不能稱之為比其他工具“更好”,它們只是更適合其預期的用途。還要注意的是,這些圖形客戶端所能做的,命令列客戶端都能做到;在處理你的倉庫時,命令列仍然是你擁有最大能力和控制力的地方。
gitk
和 git-gui
安裝 Git 時,你還會得到它的視覺化工具,gitk
和 git-gui
。
gitk
是一個圖形化的歷史檢視器。可以把它看作是基於 git log
和 git grep
的一個強大的圖形使用者介面外殼。當你試圖查詢過去發生的事情,或者視覺化你的專案歷史時,這是要使用的工具。
Gitk 最容易從命令列呼叫。只需 cd
進入 Git 倉庫,然後輸入
$ gitk [git log options]
Gitk 接受許多命令列選項,其中大部分會傳遞給底層的 git log
操作。可能最有用的是 --all
標記,它告訴 gitk
顯示可從任何引用到達的提交,而不僅僅是 HEAD。Gitk 的介面看起來像這樣

gitk
歷史檢視器頂部顯示的內容有點像 git log --graph
的輸出;每個點代表一個提交,線條代表父子關係,引用顯示為彩色框。黃點代表 HEAD,紅點代表尚未成為提交的更改。底部是選定提交的檢視;左側是註釋和補丁,右側是摘要檢視。中間是一組用於搜尋歷史的控制元件。
git-gui
,另一方面,主要是一個用於建立提交的工具。它同樣最容易從命令列呼叫
$ git gui
它看起來像這樣

git-gui
提交工具左側是索引區;未暫存的更改在上方,已暫存的更改在下方。你可以透過點選檔案圖示來在兩種狀態之間移動整個檔案,或者透過點選檔名來選擇檔案以進行檢視。
右上角是差異檢視,顯示當前選中檔案的更改。你可以透過在此區域右鍵點選來暫存單個“塊”(或單個行)。
右下角是訊息和操作區域。在文字框中輸入你的訊息,然後點選“Commit”來執行類似於 git commit
的操作。你也可以透過選擇“Amend”單選按鈕來修改上次提交,這會用上次提交的內容更新“Staged Changes”(已暫存的更改)區域。然後你可以簡單地暫存或取消暫存一些更改,修改提交訊息,並再次點選“Commit”來用新的提交替換舊的提交。
gitk
和 git-gui
是任務導向型工具的示例。它們各自都為特定目的(分別用於檢視歷史和建立提交)量身定製,並省略了該任務不需要的功能。
GitHub 適用於 macOS 和 Windows
GitHub 建立了兩款面向工作流程的 Git 客戶端:一款適用於 Windows,一款適用於 macOS。這些客戶端是工作流程導向型工具的良好範例——它們並非暴露 Git 的所有功能,而是專注於一組精心挑選的、協同工作良好的常用功能。它們看起來像這樣


它們在外觀和操作上設計得非常相似,因此在本章中我們將它們視為單一產品。我們不會對這些工具進行詳細介紹(它們有自己的文件),但對“更改”檢視(你將大部分時間花費在此處)進行快速瀏覽是有必要的。
-
左側是客戶端正在跟蹤的倉庫列表;你可以透過點選此區域頂部的“+”圖示來新增倉庫(透過克隆或本地附加)。
-
中間是提交輸入區域,允許你輸入提交訊息,並選擇要包含哪些檔案。在 Windows 上,提交歷史直接顯示在此下方;在 macOS 上,它在單獨的選項卡中。
-
右側是差異檢視,顯示工作目錄中發生了什麼變化,或者所選提交中包含了哪些更改。
-
最後要注意的是右上角的“Sync”(同步)按鈕,這是你透過網路互動的主要方式。
注意
|
你不需要 GitHub 賬戶就能使用這些工具。雖然它們旨在突出 GitHub 的服務和推薦的工作流程,但它們可以愉快地與任何倉庫一起工作,並與任何 Git 主機進行網路操作。 |
安裝
GitHub 適用於 Windows 和 macOS 可從 https://desktop.github.com/ 下載。當應用程式首次執行時,它們會引導你完成所有 Git 首次設定,例如配置你的姓名和電子郵件地址,並且兩者都為許多常見的配置選項(例如憑據快取和 CRLF 行為)設定了合理的預設值。
兩者都是“常青”的——應用程式開啟時,更新會在後臺下載和安裝。這很有幫助地包含了一個捆綁的 Git 版本,這意味著你可能不必再擔心手動更新它了。在 Windows 上,客戶端包含一個快捷方式,用於啟動帶有 Posh-git 的 PowerShell,我們將在本章後面詳細討論。
下一步是為該工具提供一些要操作的倉庫。客戶端會顯示你在 GitHub 上有權訪問的倉庫列表,並且可以一步克隆它們。如果你已經有一個本地倉庫,只需將其目錄從 Finder 或 Windows 資源管理器拖到 GitHub 客戶端視窗中,它就會被包含在左側的倉庫列表中。
推薦的工作流程
一旦安裝和配置完成,你可以使用 GitHub 客戶端執行許多常見的 Git 任務。此工具的預期工作流程有時被稱為“GitHub Flow”(GitHub 工作流)。我們將在 GitHub 工作流中更詳細地介紹這一點,但大體要點是 (a) 你將提交到分支,以及 (b) 你將相當定期地與遠端倉庫同步。
分支管理是這兩個工具不同之處之一。在 macOS 上,視窗頂部有一個用於建立新分支的按鈕

在 Windows 上,這可以透過在分支切換小部件中鍵入新分支的名稱來完成

建立分支後,進行新提交相當簡單。在你的工作目錄中進行一些更改,當你切換到 GitHub 客戶端視窗時,它會顯示哪些檔案已更改。輸入提交訊息,選擇你想要包含的檔案,然後點選“Commit”(提交)按鈕(Ctrl-Enter 或 ⌘-Enter)。
你透過網路與其他倉庫互動的主要方式是“Sync”(同步)功能。Git 內部有獨立的推送(pushing)、獲取(fetching)、合併(merging)和變基(rebasing)操作,但 GitHub 客戶端將所有這些操作合併成一個多步驟功能。當你點選同步按鈕時,會發生以下情況
-
git pull --rebase
。如果因合併衝突而失敗,則回退到git pull --no-rebase
。 -
git push
.
這是以這種方式工作時最常見的網路命令序列,因此將它們壓縮為一個命令可以節省大量時間。
總結
這些工具非常適合它們所設計的工作流程。開發者和非開發者都能在幾分鐘內協同處理專案,並且許多此類工作流程的最佳實踐都已內建到工具中。但是,如果你的工作流程不同,或者你想要更精細地控制網路操作的執行方式和時間,我們建議你使用其他客戶端或命令列。
其他圖形使用者介面
還有許多其他圖形化的 Git 客戶端,它們涵蓋了從專用、單一用途工具到試圖暴露 Git 所有功能的應用程式。Git 官方網站在 https://git-scm.tw/downloads/guis 提供了一份精選的最受歡迎的客戶端列表。更全面的列表可在 Git Wiki 網站的 https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools.html#Graphical_Interfaces 找到。