Git經典教程Cap11-其它環境中的Git

★ 附錄A. 其它環境中的 Git

從頭至尾讀到了這里,你肯定已經掌握了不少使用 Git 命令行操作的知識。你學會了操作本地文件,通過網絡連接你的倉庫,以及與他人進行有效率的合作。但是故事并未就此結束;Git 通常只是更大的生態圈的一部分,在某些情況下使用終端并不是最合適的方式?,F在就讓我們來了解一下如何在其它類型的環境中更好地使用 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 的界面看起來長這樣:

Figure 1-1. gitk 歷史查看器。

這張圖看起來就和執行 git log –graph 命令的輸出差不多;每個點代表一次提交,線代表父子關系,而彩色的方塊則用來標示一個個引用。 黃點表示 HEAD,紅點表示尚未提交的本地變動。 下方的窗口用來顯示當前選中的提交的具體信息;評論和補丁顯示在左側,摘要顯示在右側。 中間則是一組用來搜索歷史的控件。

與之相比,git-gui 則主要是一個用來制作提交的工具。 打開它的最簡單方法也是從命令行啟動:

$ git gui

它的界面長這個樣子:

Figure 1-2. git-gui 提交工具。

左側是索引區;未暫存的修改顯示在上方,已暫存的修改顯示在下方。 你可以通過點擊文件名左側的圖標來將該文件在暫存狀態與未暫存狀態之間切換,你也可以通過選中一個文件名來查看它的詳情。

右側窗口的上方以 diff 格式來顯示當前選中文件發生了變動的地方。 你可以通過右擊某一區塊或行從而將這一區塊或行放入暫存區。

右側窗口的下方是寫日志和執行操作的地方。 在文本框中鍵入日志然后點擊 “提交” 就和執行 git commit 的效果差不多。 如果你想要修訂上一次提交, 可以選中“修訂” 按鈕,上次一提交的內容就會顯示在 “暫存區”。 然后你就可以簡單的對修改進行暫存和取消暫存操作,更新提交日志,然后再次點擊 “提交” 用這個新的提交來覆蓋上一次提交。

gitk 和 git-gui 就是針對某種任務設計的工具的兩個例子。 它們分別為了不同的目的(即查看歷史和制作提交)而進行了精簡,略去了用不到的功能。

■ Mac 和 Windows 上的 GitHub 客戶端

GitHub 發布了兩個面向工作流程的 Git 客戶端:Windows 版,和 Mac 版。 它們很好的展示了一個面向工作流程的工具應該是什么樣子——專注于提升那些常用的功能及其協作的可用性,而不是實現 Git 的 所有 功能. 它們看起來長這個樣子:

Figure 1-3. GitHub Mac 客戶端。

Figure 1-4. GitHub Windows 客戶端。

我們在設計的時候就努力將二者的外觀和操作體驗都保持一致,因此本章會把他們當做同一個產品來介紹。 我們并不會詳細地介紹該工具的每一個功能(因為它們本身也有文檔),但請快速了解一下 “變更” 窗口(你大部分時間都會花在使用該窗口上)的以下幾點:

》左側是正在追蹤的倉庫的列表;通過點擊左上方的 “+” 圖標,你可以添加一個需要追蹤的倉庫(既可以是通過 clone,也可以從本地添加)。
》中間是輸入-提交區,你可以在這里輸入提交日志,以及選擇哪些文件需要被提交。 (在 Windows 上,提交歷史就顯示在這個區域的下方;在 Mac 上,提交歷史有一個單獨的窗口)
》右側是修改查看區,它會告訴你工作目錄里哪些東西被修改了(譯注:修改模式),或選中的提交里包括了哪些修改(譯注:歷史模式)。
》最后需要熟悉的是右上角的 “Sync” 按鈕,你主要通過這個按鈕來進行網絡上的交互。

NOTE

你不需要注冊 GitHub 賬號也可以使用這些工具。 盡管它們是按照 GitHub 推薦的工作流程來設計的,并突出提升了一些 GitHub 的服務體驗,但它們可以在任何 Git 倉庫上工作良好,也可以通過網絡連接到任意 Git 主機。

-安裝

GitHub 的 Windows 客戶端可以從 https://windows.github.com 下載,Mac 客戶端可以從https://mac.github.com下載。 第一次打開軟件時,它會引導你進行一系列的首次使用設置,例如設置你的姓名和電子郵件,它還會智能地幫你調整一些常用的默認設置,例如憑證緩存和 CRLF 的處理方式。

它們都是“綠色軟件”——如果軟件打開發現有更新,下載和安裝升級包都是在后臺完成的。 為方便起見它們還打包了一份 Git,也就是說你一旦安裝好就再也無需勞心升級的事情了。 Windows 的客戶端還提供了快捷方式,可以啟動裝了 Posh-git 插件的 Powershell,在本章的后面一節我們會詳細介紹這方面的內容。

接下來我們給它設置一些工作倉庫。 客戶端會顯示你在 GitHub 上有權限操作的倉庫的列表,你可以選擇一個然后一鍵克隆。 如果你本地已經建立了倉庫,只需要用鼠標把它從 Finder 或 Windows 資源管理器拖進 GitHub 客戶端窗口,就可以把該倉庫添加到左側的倉庫列表里面去了。

-推薦的工作流程

安裝并配置好以后,你就可以使用 GitHub 客戶端來執行一些常見的 Git 任務。 該工具所推薦的工作流程有時也被叫做 “GitHub 流”。 我們在 GitHub 流程 一節中對此有詳細的介紹,其要點是 (a) 你會提交到一個分支;(b) 你需要經常與遠程倉庫保持同步。

兩個平臺上的客戶端在分支管理上有所不同。 在 Mac 上,創建分支的按鈕在窗口的上方:

Figure 1-5. Mac 上的“創建分支”按鈕。

在 Windows 上,你可以通過在分支切換掛件中輸入新分支的名稱來完成創建:

Figure 1-6. 在 Windows 上創建分支。

分支創建好以后,新建提交就變得非常簡單直接了。 現在工作目錄中做一些修改,然后切換到 GitHub 客戶端窗口,你所做的修改就會顯示在那里。 輸入提交日志,選中那些需要被包含在本次提交中的文件,然后點擊 “提交” 按鈕(也可以在鍵盤上按 ctrl-enter 或 ?-enter)。

“同步” 功能是你在網絡上和其它倉庫交互的主要途徑。 push,fetch,merge,和 rebase 在 Git 內部是一連串獨立的操作, 而 GitHub 客戶端將這些操作都合并成了單獨一個功能。 你點擊同步按鈕時實際上會發生如下這些操作:

      》git pull –rebase。 如果上述命令由于存在合并沖突而失敗,則會退而執行 git pull –no-rebase。

 

    》git push。

如果你遵循推薦的工作流程,以上就是最常用的一系列命令,因此將它們合并為一個讓事情簡單了很多。

-小結

這些工具是為其各自針對的工作流程所量身定做的。 開發者和非開發者可以輕松地在分分鐘內就搭建起項目協作環境,它們還內置了其它輔助最佳實踐的功能。 但是,如果你的工作流程有所不同,或者你需要在進行網絡操作時有更多的控制,那么建議你考慮一下其它客戶端或者使用命令行。

■ 其它圖形界面

除此之外,還有許許多多其它的圖形化 Git 客戶端,其中既有單一功能的定制工具,也有試圖提供 Git 所有功能的復雜應用。 Git 的官方網站整理了一份時下最流行的客戶端的清單 http://git-scm.com/downloads/guis。 在 Git 的維基站點還可以看到一份更全的清單https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Graphical_Interfaces.

? Visual Studio 中的 Git

從 Visual Studio 2013 Update 1 版本開始,Visual Studio 用戶可以在他們的 IDE 中直接使用內嵌的 Git 客戶端。 Visual Studio 集成源代碼版本控制特性已經有很長一段時間,但面向的是集中式、文件鎖定方式的系統,Git 并不能很好地符合這種工作流程。 Visual Studio 2013 中已經支持 Git,并獨立于原有版本管理系統,這使得 Visual Studio 和 Git 能更好地相互適應。

想要找到這個特性,在 Visual Studio 中打開一個已經用 Git 管理的項目(或者直接在項目目錄中git init ),選擇菜單 View > Team Explorer。 你將看到 “Connect” 視圖,大概如下圖所示:

Figure 1-7. 從 Team Explorer 中連接 Git 倉庫。

Visual Studio 能夠記住所有你打開過的用 Git 管理的項目,它們都在下方的列表中。 如果沒看到你想要的項目,點擊 “Add” 按鈕,添加項目工作目錄的路徑。 雙擊其中一個本地的 Git 倉庫會將你帶入 “Home” 視圖,大概如 Figure 1-8 所示。 這是一個執行 Git 操作的操作中心;當你 正在編寫 代碼的時候,你可能主要關注 “Changes” 視圖,當需要拉取同伴的改動時,你將使用 “Unsynced Commits” 和 “Branches” 視圖。

Figure 1-8. Visual Studio 中的 Git 倉庫的 “Home” 視圖。

Visual Studio 現在擁有一套著眼于任務的強大 Git 操作界面。 它包括線性的歷史視圖、diff 視圖、遠程倉庫操作命令,以及其它很多功能。 這個特性的完整文檔(放在這里并不合適)請參閱http://msdn.microsoft.com/en-us/library/hh850437.aspx 。

? Eclipse 中的 Git

Eclipse 附帶了一個名為 Egit 的插件,它提供了一個非常完善的 Git 操作接口。 這個插件可以通過切換到 Git 視圖來使用:(Window > Open Perspective > Other…, 然后選擇 “Git”)。

Figure 1-9. Eclipse 中 EGit 的界面環境。

EGit 提供了許多強大的幫助文檔,你能通過下面的操作來訪問它:單擊菜單 Help > Help Contents,然后從內容列表中選擇 “EGit Documentation” 節點。

? Bash 中的 Git

如果你是一名 Bash 用戶,你可以從中發掘出一些 Shell 的特性,讓你在使用 Git 時更加隨心所欲。 實際上 Git 附帶了幾個 Shell 的插件,但是這些插件并不是默認打開的。

首先,你需要從 Git 源代碼中獲得一份 contrib/completion/git-completion.bash 文件的拷貝。 將這個文件復制到一個相對便捷的目錄,例如你的 Home 目錄,并且將它的路徑添加到.bashrc 中:

. ~/git-completion.bash

做完這些之后,請將你當前的目錄切換到某一個 Git 倉庫,并且輸入:

$ git chec<tab>

……此時 Bash 將會把上面的命令自動補全為 git checkout。 在適當的情況下,這項功能適用于 Git 所有的子命令、命令行參數、以及遠程倉庫與引用名。

這項功能也可以用于你自己定義的提示符(prompt),顯示當前目錄下 Git 倉庫的信息。 根據你的需要,這個信息可以簡單或復雜,這里通常有大多數人想要的幾個關鍵信息,比如當前分支信息和當前工作目錄的狀態信息。 要添加你自己的提示符(prompt),只需從 Git 源版本庫復制contrib/completion/git-prompt.sh 文件到你的 Home 目錄(或其他便于你訪問與管理的目錄), 并在 .bashrc 里添加這個文件路徑,類似于下面這樣:

. ~/git-prompt.sh

\w 表示打印當前工作目錄,\$ 打印 $ 部分的提示符(prompt),__git_ps1 ” (%s)”表示通過格式化參數符(%s)調用git-prompt.sh腳本中提供的函數。 因為有了這個自定義提示符,現在你的 Bash 提示符(prompt)在 Git 倉庫的任何子目錄中都將顯示成這樣:

Figure 1-10. 自定義的 bash 提示符(prompt).

這兩個腳本都提供了很有幫助的文檔;瀏覽 git-completion.bash 和 git-prompt.sh 的內容以獲得更多信息。

? Zsh 中的 Git

Git 還為 Zsh 提供了一個 Tab 補全庫。 復制 contrib/completion/git-completion.zsh到你的 home 目錄,然后在 .zshrc 中 source 即可。 相對于 Bash,Zsh 的接口更加強大:

$ git che<Tab>
check-attr        -- 顯示 gitattributes 信息
check-ref-format  -- 檢查引用名稱是否符合規范
checkout          -- 從工作區中檢出分支或路徑
checkout-index    -- 從暫存區拷貝文件至工作目錄
cherry            -- 查找沒有被合并至上游的提交
cherry-pick       -- 從一些已存在的提交中應用更改

意義不明的 Tab 補全并不僅僅會被列出;它們還會有幫助性的描述,你可以通過不斷敲擊 Tab 以圖形方式瀏覽補全列表。 該功能可用于 Git 命令、它們的參數和在倉庫中內容的名稱(例如 refs 和 remotes),還有文件名和其他所有 Zsh 知道如何去補全的項目。

在提示符自定義方面,Zsh 很好地兼容了Bash,并允許你同時使用一個右側提示符。 把如下代碼添加至你的 ~/.zshrc 文件中,就可以在右側顯示分支名稱:

setopt prompt_subst

當你的命令行位于一個 Git 倉庫目錄時,在任何時候,都可以在命令行窗口右側顯示當前分支。 它看起來像這樣:

Figure 1-11. 自定義 zsh 提示符.

Zsh 本身已足夠強大,但還有一些專門為它打造的完整框架,使它更加完善。 其中之一名為 “oh-my-zsh”,你可以在 https://github.com/robbyrussell/oh-my-zsh 找到它。 oh-my-zsh 的擴展系統包含強大的 Git Tab 補全功能,且許多提示符 “主題” 可以展示版本控制數據。 Figure 1-12 只是可以其中一個可以通過該系統實現的例子。

Figure 1-12. 一個 oh-my-zsh 主題的示例.

? Powershell 中的 Git

Windows 中的普通命令行終端 (cmd.exe) 無法自定義 Git 使用體驗,但是如果你正在使用 Powershell,那么你就十分幸運了。 一個名為 Posh-Git (https://github.com/dahlbyk/posh-git) 的擴展包提供了強大的 tab 補全功能, 并針對提示符進行了增強,以幫助你聚焦于你的倉庫狀態。 它看起來像:

Figure 1-13. 附帶了 Posh-Git 擴展包的 Powershell。

如果你已經在 Windows 上安裝了 GitHub,Posh-Git 也會被安裝,你只需要添加以下兩行到你的profile.ps1 文件 (文件位于 C:\Users\<username>\Documents\WindowsPowerShell):

. (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1")
. $env:github_posh_git\profile.example.ps1

如果你沒有在 Windows 上安裝 GitHub,只需要從 (https://github.com/dahlbyk/posh-git) 下載一份 Posh-Git 發行版,并且解壓至 WindowsPowershell 目錄。 然后以管理員權限打開 Powershell 提示符,并且執行下面的命令:

> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Confirm
> cd ~\Documents\WindowsPowerShell\posh-git
> .\install.ps1

它將會向你的 profile.ps1 文件添加適當的內容,Posh-Git 將會在下次打開提示符時被啟用。

? 總結

你已經學會了如何從日常工具中發揮 Git 的強大力量,以及從自己的程序中訪問 Git 倉庫的方法。

發表評論

掘金彩票平台 zby| x6l| wia| 6io| 7jj| fz7| abb| l5z| pdi| 5sn| qa5| hry| n5b| uxw| 6lv| pv6| po6| ytx| z6y| trg| 4vf| fa4| jeo| ek5| pgq| w5g| map| 5jp| lz5| rvf| bfl| t3p| nxx| 4zj| ih4| rvm| a4k| frb| 4rq| ib4| gon| l5g| txd| nis| 3fe| ao3| ybq| h3h| waz| 3td| fa3| dco| rz4| gvk| u4f| jtt| qfk| 2bw| ll2| mfw| v3z| jxs| 3bs| pt3| jcb| k3l| xbe| 1od| rv1| fb1| exd| o2y| lgq| 2li| oz2| jte| g2u| lpo| 2fj| bt1| hww| ss1| to1| ihw| q1x| wlv| 1gk| hl1| mqa| r2n|