如何使用 GitHub 搜尋及組織存放庫歷程記錄

已完成

我們將在此處討論如何使用篩選條件、改動者與交叉連結,以搜尋及組織存放庫歷程記錄。

假設您自己是剛加入大型專案的開發人員。 有人剛剛張貼新問題,報告與 Web 應用程式側邊欄相關的錯誤 (Bug),而您獲派修正此錯誤 (Bug)。 您已經完整閱讀過該報告幾次並了解所述的問題,因此,現在您必須了解如何開始修正。

身為新的小組成員,您還不熟悉程式碼基底。 您也沒有參與規劃討論、程式碼檢閱,或任何其他可為您提供開始實作所需內容的事項。 您必須先取得該背景知識,才能充分判斷正確的修正方法。

搜尋 GitHub

儘管您並未參與導致側邊欄實作的事件,但那些事件中有許多會存留於專案的歷程記錄中。 在專案的存放庫中搜尋「側邊欄」將可作為您的起點。

GitHub 上有兩個可用的搜尋方法:頁面頂端的全域搜尋,以及可在特定存放庫索引標籤上使用的範圍搜尋。 它們會以相同方式支援相同的語法與功能,但有一些主要差異。

全域搜尋可讓您使用完整的搜尋語法,在 GitHub 上進行全面搜尋。

在 GitHub 上搜尋的螢幕擷取畫面。

搜尋結果是全面的,包括從程式碼到問題到 Marketplace (甚至使用者) 的所有內容。 這是在多個結果類型與存放庫中尋找提及重要詞彙的最佳方式。

全域搜尋結果的螢幕擷取畫面。

注意

篩選子句 is:pr 會篩選出問題/提取要求存放區傳回的問題。 某些篩選子句 (例如 is:pr) 只受到特定搜尋提供者支援,其他搜尋提供者則會予以忽略。 例如,程式碼搜尋提供者不支援該子句,因此,提供者將忽略該子句,並以任一種方式傳回相同的程式碼結果。

在我們的案例中,使用範圍限定在目前存放庫的全域搜尋,是尋找提及「側邊欄」一詞之程式碼與認可的好方式。 您可能也會收到問題與提取要求的命中次數,儘管在全域搜尋結果檢視中進一步篩選並不容易。

若要製作複雜的全域搜尋,請嘗試進階搜尋 \(英文\)。

內容搜尋適用於某些索引標籤,例如 [問題] 與 [提取要求]。 這些搜尋的範圍是目前的存放庫,而且只會傳回該類型的結果。 此範圍的優點是讓使用者介面能夠公開已知的特定類型篩選,例如作者、標籤、專案等項目。

存放庫內的內容搜尋的螢幕擷取畫面。

使用內容搜尋是您在目前存放庫中尋找某個項目時的慣用選項。 在我們的案例中,這是用來尋找提及「側邊欄」之搜尋結果的一種好方式,接著您可以使用篩選下拉式清單輕鬆縮小搜尋範圍。

使用搜尋篩選

使用完整的搜尋語法有無數種搜尋方式。 不過,大部分的搜尋只會使用一些常用篩選。 雖然這些通常可從內容搜尋下拉式清單中取得,但有時直接輸入更方便。

以下是一些範例篩選查詢:

查詢 說明
is:open is:issue assignee:@me 開啟指派給目前使用者的問題 (@me)
is:closed is:pr author:contoso 已關閉 @contoso 所建立的提取要求
is:pr sidebar in:comments 註解中提及「側邊欄」的提取要求
is:open is:issue label:bug -linked:pr 開啟標示為沒有已連結提取要求之錯誤 (Bug) 的問題

請參閱了解搜尋語法

什麼是 git blame?

儘管名稱不吉利,但 git blame 是可顯示檔案認可歷程記錄的命令。 此命令可讓您輕鬆查看哪些人進行哪些變更,以及何時進行。 這可讓您更加容易地追蹤其他已處理某個檔案的人員,以找出其輸入或參與。

注意

某些 Git 系統會將 git praise 的別名設定為 git blame,以避免發生判斷的含意。

GitHub 中的改動者

GitHub 利用更強大的使用者介面來擴充基本的 git blame 功能。

GitHub 改動者的螢幕擷取畫面。

在我們的案例中,您可能有數種方式可以看到此檢視。 您可能已從全域搜尋找到一些側邊欄程式碼,並已選取 [改動記錄] 選項來查看上一個處理它的人員,或您可能已找到提取要求,並回溯追蹤到與錯誤 (Bug) 描述相關的最後一個認可。 無論您用哪種方式到達此處,改動者檢視是一個針對手邊工作尋找主題專家的有效方式。

交叉連結問題、認可等項目

GitHub 很適合用於共同作業軟體專案的部分原因是,其支援將不同的資訊片段連結在一起。 這其中有些部分會自動發生,例如,當您從分支上的一系列認可建立提取要求時。 其他時候,您可以使用介面,利用下拉式清單選項,手動將提取要求或專案連結至問題。

自動連結的參考

為了讓您更輕鬆地在整個專案中交叉連結不同的項目,GitHub 提供簡短的語法。 例如,如果您留下像是 Duplicate of #8 的註解,GitHub 將會辨識出 #8 是一個問題,並為您建立適當的連結。

自動連結的問題的螢幕擷取畫面。

如果您貼上認可識別碼的前七個或更多字元,GitHub 也會為您連結該認可。

自動連結的認可的螢幕擷取畫面。

在我們的案例中,如果有人預先想到留下內容,則這些連結在提高速度方面可能非常有價值。 例如,側邊欄的目前狀態可能有一些與 JavaScript 相依性相關的已知問題。 如果與該相依性相關的問題已在另一個未明確提及「側邊欄」的問題中討論過,那麼就很難找到它。 不過,如果有人預先想到在討論中連結該問題,那麼,現在就能為您節省許多時間。 當您下一次記載問題與提取要求時,請記住這一點。

深入了解自動連結的參考和 URL

使用 @mention 執行使用者迴圈

除了連結問題和認可,讓其他人與討論產生關聯通常很有助益。 若要這樣做,最簡單的方式是使用 @mention。 這種提及會通知提及的使用者,讓其可以參與討論。 這也很適合用來識別誰與很久以前解決的問題有關。

@ 提及的螢幕擷取畫面。