如何優雅地向別人介紹高階大氣上檔次的Git

機器之心發表於2019-01-23

本文主題是如何向工具初學者介紹分散式版本控制系統 Git。除了瞭解關於 Git 的基本知識以外,大家還可以學到一些工具學習方面的東西。

如何優雅地向別人介紹高階大氣上檔次的Git

我發現的問題

我的一些職業經歷涉及跨職能領域,因此我瞭解所有同事的工作方式。我記得有一家公司在我加入的幾周前才開始使用 Git。

我用三步把 post-it 放到螢幕上:第一步是 add,第二步是 commit,第三步是 push。

如何優雅地向別人介紹高階大氣上檔次的Git

他們不知道為什麼要用這三步,他們只知道為了防止發生其他問題,他們應該遵循這三個步驟。但是問題還是頻頻發生,所以我決定準備一個關於 Git 的討論會。

想法

我喜歡在頭腦中繪圖。我不寫「思維導圖」,因為它們是眾所周知的影像形式。而我所說的「圖」是一種大腦中的有框架、結構化或其他形式的影像表徵。例如,我在頭腦中想象骰子來學習加法。

所以我準備了一些圖。理解這篇文章不一定需要看懂這些圖。但出於可訪問性,我對每一張圖都作出瞭解釋。在這種情況下,詞彙的教學就非常重要了。否則他們無法理解來自 Git 的資訊。這些圖是一種很好地向他們介紹詞彙的方式。

分散式版本控制系統

概括圖包括四部分,分別是:

開發環境中的:

  • 工作區

  • 暫存區或索引

  • 本地版本庫

伺服器中的:

  • 遠端版本庫

到那個時候,你就可以解釋分散式版本控制系統的好處了。

複製版本庫

如何優雅地向別人介紹高階大氣上檔次的Git

在複製版本庫時,遠端版本庫中的資料要傳遞到兩個區域:

  • 工作區

  • 本地版本庫

在工作區中進行更改

如何優雅地向別人介紹高階大氣上檔次的Git

工作區中有兩類檔案:

  • 追蹤檔案:Git 知道的檔案。

  • 未追蹤檔案:因為尚未新增因此 Git 不知道的檔案。

更新遠端版本庫

如何優雅地向別人介紹高階大氣上檔次的Git

當工作區更改就緒時,必須先把它們新增到暫存區中。當暫存區中有一組特定的更改時,我們就需要在本地庫中建立帶有這些特定資訊的 commit。

當本地版本庫中有一或多個準備和世界其他地方共享的 commit 時,我們必須把它們 push 到遠端版本庫中。這時,開發環境中的檔案狀態已經有所不同了:已修改、已暫存和已提交(modified, staged and committed)。

如何優雅地向別人介紹高階大氣上檔次的Git

此外,你還可以解釋:

  • 如何顯示工作區的檔案更改:git diff

  • 如何顯示暫存區的檔案更改:git diff –staged

  • 在將檔案新增到暫存區後,如何在工作區中更改檔案

  • 等等

更新開發環境

抓取(fetch)

如何優雅地向別人介紹高階大氣上檔次的Git

執行 git fetch 後,遠端庫中的資料將僅傳遞到本地庫中。

Pulling

如何優雅地向別人介紹高階大氣上檔次的Git

當執行 git pull 後,遠端庫中的資料會傳輸到兩個區域:

  • 本地庫:抓取(fetch)

  • 工作區:合併(merge)

你可以用 git pull—rebase 檢視 commit 歷史。它是由 fetch + rebase 而不是 fetch + merge 組成的。它將會重新執行你的本地提交,而且你無法看到提交歷史中已知的 diamond shape。

如何優雅地向別人介紹高階大氣上檔次的Git

下一步

你可以在開發環境中新增另一個區域來解釋暫存區:dirty work directory。

如果人們將這些概念內化,他們就可以建立堅實的基礎,從而更容易地使用分支、提交歷史以及衍合(rebasing)等。

溫馨提示

我也曾用過其他版本控制系統(Visual SourceSafe、TFS 和 Subversion),以我的個人經驗來講,缺乏知識對於使用舊工具和新工具而言都有害。我們不僅僅要選擇工具,還要掌握工具。

擴充閱讀:https://git-scm.com/book/en

原文地址:https://rachelcarmena.github.io/2018/12/12/how-to-teach-git.html

相關文章