-
1. 開始
-
2. Git 基礎
-
3. Git 分支
-
4. 伺服器上的 Git
- 4.1 協定
- 4.2 在伺服器上安裝 Git
- 4.3 產生您的 SSH 公開金鑰
- 4.4 設定伺服器
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 第三方託管選項
- 4.10 總結
-
5. 分散式 Git
-
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
的強大 GUI 外殼。當您嘗試尋找過去發生的事情或視覺化專案的歷程時,這個工具非常實用。
從命令列調用 Gitk 最容易。只需 cd
到 Git 儲存庫中,然後輸入
$ gitk [git log options]
Gitk 接受許多命令列選項,其中大多數會傳遞到基礎的 git log
操作。最有用的可能是 --all
旗標,它會告訴 gitk
顯示可從任何 ref 存取的提交,而不僅僅是 HEAD。Gitk 的介面如下所示

gitk
歷程檢視器頂部看起來有點像 git log --graph
的輸出;每個點代表一個提交,線條代表父子關係,並且 ref 以彩色方塊顯示。黃點代表 HEAD,紅點代表尚未成為提交的變更。底部是所選提交的檢視;左側的註解和修補程式,右側的摘要檢視。中間是一組用於搜尋歷程的控制項。
另一方面,git-gui
主要是一個用於製作提交的工具。同樣地,從命令列調用它最容易
$ git gui
它看起來像這樣

git-gui
提交工具左邊是索引區;未暫存的變更在上方,已暫存的變更在下方。您可以透過點擊檔案圖示來在兩種狀態之間移動整個檔案,或者點擊檔案名稱來選擇檢視該檔案。
右上角是差異檢視區,顯示目前選取檔案的變更。您可以透過在此區域按下滑鼠右鍵來暫存個別的程式碼塊(或個別的程式碼行)。
右下角是訊息和動作區域。在文字框中輸入您的訊息,然後點擊「Commit」來執行類似 git commit
的操作。您也可以選擇「Amend」單選按鈕來修改上次提交,這會將上次提交的內容更新至「Staged Changes」區域。然後,您可以簡單地暫存或取消暫存一些變更,修改提交訊息,然後再次點擊「Commit」以用新的提交取代舊的提交。
gitk
和 git-gui
是以任務為導向的工具範例。它們各自針對特定用途(分別是檢視歷史和建立提交)量身打造,並省略了該任務不需要的功能。
macOS 和 Windows 版 GitHub
GitHub 建立了兩個以工作流程為導向的 Git 用戶端:一個用於 Windows,另一個用於 macOS。這些用戶端是以工作流程為導向的工具的好例子 – 它們不是公開 *所有* Git 的功能,而是著重於一組精選的常用功能,這些功能可以很好地協同工作。它們看起來像這樣


它們的設計看起來和運作方式非常相似,因此我們將在本章中將它們視為單一產品。我們不會詳細介紹這些工具(它們有自己的文件),但快速瀏覽「變更」檢視(您將在此花費大部分時間)是必要的。
-
左側是客戶端正在追蹤的儲存庫列表;您可以透過點擊此區域頂部的「+」圖示來新增儲存庫(透過複製或在本機附加)。
-
在中間是一個提交輸入區域,可讓您輸入提交訊息,並選擇應包含哪些檔案。在 Windows 上,提交歷史記錄會直接顯示在此下方;在 macOS 上,它位於單獨的索引標籤中。
-
右側是差異檢視區,顯示您的工作目錄中已變更的內容,或選定提交中包含的變更。
-
最後要注意的是右上角的「Sync」按鈕,這是您透過網路互動的主要方式。
注意
|
您不需要 GitHub 帳戶即可使用這些工具。雖然它們的設計目的是為了突顯 GitHub 的服務和建議的工作流程,但它們很樂意與任何儲存庫合作,並與任何 Git 主機進行網路操作。 |
安裝
Windows 和 macOS 版 GitHub 可以從 https://desktop.github.com/ 下載。首次執行應用程式時,它們會引導您完成所有首次 Git 設定,例如設定您的姓名和電子郵件地址,並且兩者都為許多常見的組態選項設定合理的預設值,例如憑證快取和 CRLF 行為。
兩者都是「常青」的 – 更新會在應用程式開啟時在背景下載並安裝。這很有幫助地包含了 Git 的捆綁版本,這表示您可能不必擔心再次手動更新它。在 Windows 上,客戶端包含一個捷徑,可以啟動具有 Posh-git 的 PowerShell,我們將在本章後面詳細討論。
下一步是為該工具提供一些儲存庫來使用。客戶端會顯示您在 GitHub 上有權存取的儲存庫列表,並且可以一步複製它們。如果您已經有本機儲存庫,只需將其目錄從 Finder 或 Windows 檔案總管拖曳到 GitHub 客戶端視窗中,它就會包含在左側的儲存庫列表中。
建議的工作流程
安裝和設定完成後,您可以使用 GitHub 客戶端來執行許多常見的 Git 任務。此工具的預期工作流程有時稱為「GitHub Flow」。我們在 GitHub Flow 中更詳細地介紹了這一點,但大意是 (a) 您將提交到分支,並且 (b) 您將相當定期地與遠端儲存庫同步。
分支管理是這兩個工具分歧的領域之一。在 macOS 上,視窗頂部有一個按鈕用於建立新分支

在 Windows 上,這是透過在分支切換小工具中輸入新分支的名稱來完成的

建立分支後,建立新的提交相當簡單。在您的工作目錄中進行一些變更,當您切換到 GitHub 客戶端視窗時,它會顯示哪些檔案已變更。輸入提交訊息,選取您想要包含的檔案,然後點擊「Commit」按鈕 (ctrl-enter 或 ⌘-enter)。
您透過網路與其他儲存庫互動的主要方式是透過「Sync」功能。Git 內部具有用於推送、提取、合併和重新設定基準的單獨操作,但 GitHub 客戶端將所有這些合併為一個多步驟功能。以下是當您點擊 Sync 按鈕時會發生的情況
-
git pull --rebase
。如果因合併衝突而失敗,則退回到git pull --no-rebase
。 -
git push
.
這是以這種方式工作時最常見的網路指令序列,因此將它們壓縮為一個指令可以節省大量時間。
總結
這些工具非常適合它們所設計的工作流程。開發人員和非開發人員都可以在幾分鐘內在專案上進行協作,並且此類工作流程的許多最佳實務都已融入這些工具中。但是,如果您的工作流程不同,或者您希望更精確地控制網路操作的方式和時間,我們建議您使用其他客戶端或命令列。
其他 GUI
有許多其他圖形 Git 用戶端,它們的範圍從專用、單用途工具到嘗試公開 Git 可以執行的所有操作的應用程式。官方 Git 網站上列出了最受歡迎的客戶端 https://git.dev.org.tw/downloads/guis。Git wiki 網站上提供了更全面的列表,網址為 https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools.html#Graphical_Interfaces。