如何優雅地向別人介紹高端大氣上檔次的Git
選自GitHub.io
作者:Rachel Carmena
機器之心編譯
參與:李詩萌、路雪
本文主題是如何向工具初學者介紹分散式版本控制系統 Git。除了了解關於 Git 的基本知識以外,大家還可以學到一些工具學習方面的東西。
我發現的問題
我的一些職業經歷涉及跨職能領域,因此我了解所有同事的工作方式。我記得有一家公司在我加入的幾周前才開始使用 Git。
我用三步把 post-it 放到屏幕上:第一步是 add,第二步是 commit,第三步是 push。
他們不知道為什麼要用這三步,他們只知道為了防止發生其他問題,他們應該遵循這三個步驟。但是問題還是頻頻發生,所以我決定準備一個關於 Git 的討論會。
想法
我喜歡在頭腦中繪圖。我不寫「思維導圖」,因為它們是眾所周知的圖像形式。而我所說的「圖」是一種大腦中的有框架、結構化或其他形式的圖像表徵。例如,我在頭腦中想像骰子來學習加法。
所以我準備了一些圖。理解這篇文章不一定需要看懂這些圖。但出於可訪問性,我對每一張圖都作出了解釋。
在這種情況下,辭彙的教學就非常重要了。否則他們無法理解來自 Git 的信息。這些圖是一種很好地向他們介紹辭彙的方式。
分散式版本控制系統
概括圖包括四部分,分別是:
開發環境中的:
工作區
暫存區或索引
本地版本庫
伺服器中的:
遠程版本庫
到那個時候,你就可以解釋分散式版本控制系統的好處了。
複製版本庫
在複製版本庫時,遠程版本庫中的數據要傳遞到兩個區域:
工作區
本地版本庫
在工作區中進行更改
工作區中有兩類文件:
追蹤文件:Git 知道的文件。
未追蹤文件:因為尚未添加因此 Git 不知道的文件。
更新遠程版本庫
當工作區更改就緒時,必須先把它們添加到暫存區中。
當暫存區中有一組特定的更改時,我們就需要在本地庫中創建帶有這些特定信息的 commit。
當本地版本庫中有一或多個準備和世界其他地方共享的 commit 時,我們必須把它們 push 到遠程版本庫中。
這時,開發環境中的文件狀態已經有所不同了:已修改、已暫存和已提交(modified, staged and committed)。
此外,你還可以解釋:
如何顯示工作區的文件更改:git diff
如何顯示暫存區的文件更改:git diff –staged
在將文件添加到暫存區後,如何在工作區中更改文件
等等
更新開發環境
抓取(fetch)
執行 git fetch 後,遠程庫中的數據將僅傳遞到本地庫中。
Pulling
當執行 git pull 後,遠程庫中的數據會傳輸到兩個區域:
本地庫:抓取(fetch)
工作區:合併(merge)
你可以用 git pull—rebase 查看 commit 歷史。它是由 fetch rebase 而不是 fetch merge 組成的。它將會重新執行你的本地提交,而且你無法看到提交歷史中已知的 diamond shape。
下一步
你可以在開發環境中添加另一個區域來解釋暫存區:dirty work directory。
如果人們將這些概念內化,他們就可以建立堅實的基礎,從而更容易地使用分支、提交歷史以及衍合(rebasing)等。
溫馨提示
我也曾用過其他版本控制系統(Visual SourceSafe、TFS 和 Subversion),以我的個人經驗來講,缺乏知識對於使用舊工具和新工具而言都有害。我們不僅僅要選擇工具,還要掌握工具。
※有了Julia語言,深度學習框架從此不需要計算圖
※BP不用算梯度,這樣的線性反向傳播也能Work!
TAG:機器之心 |