Git 和 Github:完全新手的初學者指南

已發表: 2017-08-15

不管電視和電影告訴我們什麼,作為軟件開發人員的生活並不包括坐在黑暗的房間裡,我們的鍵盤只被顯示器的光芒照亮,與另一個人互動的想法令人厭惡。 不,軟件開發人員的生活是社交和協作的——有時會令人沮喪。 這就是為什麼我們有 git 和 Github。

Git 是版本控制軟件,它使與隊友的協作變得超級簡單……一旦您通過了最初的學習曲線。 這可能令人生畏,但這就是我在這裡的原因!

什麼是 Git?

嗯,這不只是我們南方人從我們的門廊上趕走varmints 的方式,我會告訴你的。

就像我上面說的,Git 是版本控制軟件。 它是由 Linux 的發明者 Linus Torvalds 創建的。 您不必運行 Linux 即可使用 git——您也可以在 Windows 和 Mac 上使用它。

Git 可讓您輕鬆跟踪您和您的團隊在軟件開發過程中所做的每個修訂。 你們共享一個獨立工作的代碼庫,然後又合併在一起。 你也不需要一直連接,因為項目既保存在每台機器本地,也保存在遠程(可能在 Github)。

Git 很特別(而且幾乎是強制性的),因為您可以恢復到任何以前版本的代碼、分支和開發特定功能而不會影響任何東西或任何其他人,並且由於其分佈式特性而保持數據損壞的安全性。

它還提供易於實現的加密和跨操作系統兼容性,以及異步、非線性工作流,因此無論您身在何處,都可以處理項目的某些方面。

基本上,如果你不使用 git,你就是用一隻手綁在背後編碼。

所需詞彙

當您第一次開始使用 git 時,它可能會令人生畏。 如果您過去從未使用過任何形式的版本控制,那麼命令和概念可能看起來完全陌生。 不過,您會非常快速地拿起它們。

存儲庫:

通常稱為repo 。 存儲庫是您使用 git 跟踪的文件和文件夾的集合。 存儲庫包含您的團隊對項目所做更改的整個歷史記錄。 這是您和您的團隊將代碼投入其中的大 ole 盒子。

GitHub:

最流行的 git repos 遠程存儲解決方案。 它還允許您設置項目的訪問權限、跟踪和提交錯誤、接受功能請求、訂閱存儲庫通知以及利用圖形界面,而不是使用命令行。 回購默認為公開,但付費賬戶可以有私人賬戶。

犯罪:

將此視為保存您的工作。 當您提交到存儲庫時,就好像您正在收集當時存在的文件並將它們放入時間囊中。 提交只會存在於您的本地機器上,直到它被推送到遠程存儲庫。

推:

推動是承諾黃油的麵包。 提交會將您的文件扔進時間膠囊,而推動則是將時間膠囊發射到太空中。 推送本質上是將您的提交同步到雲(同樣,可能是 Github)。 您也可以一次推送多個提交。 你可以離線工作,完成大量工作,然後當你回到文明世界時,用那個甜蜜、甜蜜的 wifi 把它全部推送到 Github。

分支:

你可以把你的 git repo 想像成一棵樹。 樹的樹幹,上線的軟件,被稱為主分支。 那就是直播。 那棵樹的樹枝,好吧,叫做樹枝。 這些是從主代碼庫分支的代碼的單獨實例。 您可能會針對單個功能或實驗性補丁進行分支。 通過分支,你可以保持軟件的完整性,並且如果你做了一些完全瘋狂的事情,你就有辦法恢復。 它還允許您完成您的任務,而不會絆倒您團隊的方式(或他們進入您的方式)。

合併:

當一個分支被完善、沒有錯誤(至少就你所知)並準備成為主要代碼庫的一部分時,它將被合併到主分支中。 合併就是它聽起來的樣子:將兩個分支整合在一起。 任何新的或更新的代碼都將成為代碼庫的正式部分。 任何從合併點分支的人也將在他們的分支中擁有此代碼。

克隆:

克隆一個 repo 幾乎就是它聽起來的樣子。 它需要整個在線存儲庫並在您的本地機器上製作它的精確副本。 您需要出於多種原因執行此操作,其中最重要的原因是與新團隊在項目中間開始、交換工作站或從損壞的存儲庫重新開始。

叉子:

分叉很像克隆,只不過不是在本地機器上複製現有存儲庫,而是以自己的名義獲得該代碼的全新存儲庫。 這個特性主要用於獲取現有的代碼庫並用它去一個全新的方向,這在開源軟件中經常發生; 開發人員看到了一個可行的基本想法,但希望採用不同的方式。 分叉允許這種情況發生。 您還可以在其他開發人員的存儲庫中進行遊戲,就像在您自己的個人沙箱中一樣。 如果你做了一些你認為他們可能喜歡的事情,你可以提出一個合併請求。

拉取請求:

拉取請求是當您提交將您所做的更改(在分支或分叉上)拉取(或合併)到存儲庫的主分支的請求時。 這是大時代。 這就是魔法發生的地方。 如果拉取請求獲得批准,您將正式為該軟件做出貢獻,並且 Github 將永遠準確地展示您所做的一切。 但是,如果拉取請求因任何原因被拒絕,拒絕者將能夠就請求被拒絕的原因以及您可以做些什麼來使其被接受提供反饋。

入門和所需命令

那還不錯吧?

對。 現在您已經清楚地了解了 git 是什麼,是時候深入了解並親自動手了。

但是,我應該藉此機會指出,我將假設您正在使用命令行與 git 交互。 當然也圖形化的Git客戶端(和Github上,甚至可以讓你做通過它的Web界面幾乎一切),但這個職位的目的,我們不會與他們費心了。 您將在終端之外做一些事情,但命令行將成為您的新 BFF。 所以這也是我們要做的。

如何安裝 Git

Git(可能)沒有安裝在你的電腦上,所以我們必須把它安裝到那裡。 幸運的是,無論您使用的是 Linux、Mac 還是 Windows,安裝 git 都非常簡單。

對於 Linux,打開終端並輸入sudo apt-get install git-all (如果您使用的是 Ubuntu。如果不是,則有一個列表,列出您使用的任何其他發行版的所有 Linux 軟件包安裝命令。)

在 Windows 上,它同樣簡單。 您下載安裝程序並運行它。

在 Mac 上,你只需要打開終端並輸入git 。 如果沒有安裝 git,你會看到:

單擊安裝後,您就可以開始了。

看? 超級簡單!

使用 Git

這就是樂趣開始的地方。 現在你已經安裝了 git,是時候...... git-r-done! 哈! 但現在真的是時候深入了解並學習開始使用這個驚人的小塊命令行魔法了。 還有什麼比 Github 更好的起點?

因此,請繼續註冊您的新 Github 帳戶(或者,如果您已經擁有,請登錄,我稍後會與您聯繫)。

Github 可免費用於公共存儲庫,您可以付費擁有私有存儲庫。 (僅供參考:您可以在 Bitbucket 獲得免費的私人回購,這是一個鮮為人知但很棒的地方)。 在大多數情況下,Github 上的免費選項對大多數人來說都很好(而且它的功能也像一份活生生的簡歷!),但有些客戶和雇主需要隱私和安全,所以有選擇是件好事。

之後,您就可以設置您的第一個存儲庫了! 在您驗證您的電子郵件和所有有趣的東西之後。

您首先需要在 Github 中設置存儲庫。 您也可以在計算機上完成,然後上傳,但先在網絡上完成更簡單。

請注意,我並不擔心此 repo 中的許可證或 .gitignore。 因為這不是一個真正的軟件,我不必擔心這些,但是在生產情況下,.gitignore 顯然可以讓您忽略存儲庫目錄中的文件。 您可以在此處閱讀您的軟件需要什麼許可證。

但是,我使用 README 文件初始化 repo,您​​應該使用它來保存項目的基本文檔。 在我工作時,我傾向於將它們用作主要更改、待辦事項列表和不同類型筆記的跟踪器。 但那是個人項目。 不同的團隊領導會有不同的期望。

既然這個 repo 存在於 Github 上,是時候通過克隆把它放到你的本地機器上了。 在您的存儲庫右側,文件列表正上方,您將看到一個綠色按鈕,上面寫著“克隆或下載”。 點擊它,你會看到這個:

因為我們是克隆,所以除了關於使用 HTTPS 克隆的部分之外,我們可以忽略所有內容。 您不必配置任何東西。 推送時,您只需要輸入用戶名和密碼。

但是,首先,您需要設置您希望存儲庫在本地計算機上的位置。 打開你的終端。 (Windows 用戶,搜索並打開一個名為 Windows Powershell 的程序。我也建議您右鍵單擊並選擇“以管理員身份運行”。)

您需要學習的第一個命令是ls 。 這將列出當前目錄中的所有內容。 為了簡單起見,讓我們將 dev 文件夾放在計算機的主目錄中。 您可以使用mkdir dev創建一個名為dev的目錄。 很簡單,對吧? 如果您再次ls ,您將看到列出的新文件夾。

然後你想使用cd dev移動到你的新目錄,這是更改目錄的命令。 看,命令行一點也不可怕! 如果需要返回上一個目錄,只需使用cd ..

一旦你新的dev的文件夾內,它的時間與git舞會開始。 呵呵呵呵。

首先複製單擊 Github 上綠色“克隆或下載”按鈕後出現的 URL。 它看起來像這樣: https : //github.com/bjk1337/myfirstrepo.git

從 Github 克隆 Git 存儲庫的命令

  • git 克隆 https://github.com/bjk1337/myfirstrepo.git
  • ls
  • cd myfirstrepo – 或者任何你命名的倉庫
  • ls

之後,您的終端應該是這樣的,顯示您在 Github 上設置的 README 文件。 恭喜! 您剛剛第一次使用 Git,現在可以開始開發了。

細節吉蒂堅韌不拔

現在您的機器上有一個 repo,您​​需要學習使用它。 因此,讓我們快進一點,說您已經在一個很酷的項目上工作了一段時間,並且目錄中有一些文件。 是時候提交並將它們推送到 Github 了。

添加並提交到 Git 存儲庫

  • git status – 此命令將顯示哪些文件尚未添加到下一次提交的列表中。 在大多數終端應用程序中,未添加/添加的文件將分別為紅色/綠色。
  • git 添加。 – 通過添加一個 . 在命令的末尾,您告訴 git 將所有內容都包含在目錄中。 如果要添加單個文件,只需使用它的文件名。 比如functions.php
  • git status – 取決於您是否使用了 . 或文件名,無論您添加什麼,現在都應該是綠色的。
  • git commit -m “添加三個空文件” – 當您提交這些文件時,您還應該快速留言,讓您的隊友(或您未來的自己)確切地知道該提交中的內容。 標準的 git 約定說你應該盡可能簡潔和具體,並使用動詞的現在時開始消息。

你的終端現在會有很多文本,它應該是這樣的。 但現在你知道這一切意味著什麼!

推送到像 Github 這樣的遠程 Git 存儲庫

推送到倉庫比這更容易。

  • git status – 您應該始終檢查以查看事物的外觀並確保您在正確的分支上。
  • 輸入您的 Github 用戶名和密碼- 請注意,即使您鍵入,密碼字段也將保持為空。 沒關係。 只需輸入並按回車鍵即可。 如果您使用 SSH,您將跳過此步驟。

您可以轉到您的 Github 帳戶並檢查存儲庫,您的文件將在那裡,提交消息等等!

分支和合併

您需要熟悉的最後兩個命令處理分支和合併。 就像我上面說的那樣,在一個分支上工作可以保證主代碼庫的安全,一旦你的更改都很棒,你就可以將它們全部合併在一起。

它們可能有點棘手,因此可能需要一些刺激才能讓它們表現得很好。

  • git checkout -b “branch1” ——這個命令將創建一個你命名的新分支,並將你切換到它作為你的工作分支。 它將git checkoutgit branch命令組合成一行方便的代碼。
  • touch awesome.html - 這只是一個填充命令,用於創建一個新的 html 文件,我將把它合併回母版。
  • 和以前一樣,你將git status, git add awesome.html, git commit -m “create awesome.html”
  • git status再次會讓你看到一切都應該是這樣。

如果您在合併之前嘗試推送它,您將收到一條消息,提示您需要設置 repo 的來源。 Origin是一種奇怪的命名約定,用於您的計算機認為遠程存儲庫。 所以基本上,你只是告訴它,是的,可以像對 master 一樣將這個分支推送到 Github。 這是 Stack Overflow 上關於git origin的一個很好的帖子。

順便說一下,它會告訴你它去了 branch1 –> branch1。

您可以使用git checkout master切換回 master 分支(這次沒有checkout -b因為您只在創建新分支時使用它,而不是交換。我在下面的屏幕截圖中混淆了我的命令並嘗試了git branch master . 沒有成功,因為master已經存在了。

  • git status – 一如既往。
  • git merge branch1 – 由於該分支中的一切都很好,我們可以繼續合併。
  • 如果我們再次git status ,我們將看到我們領先於origin/master 1 次提交。 這意味著我們尚未將所做的所有更改推送到 Github。
  • git push來同步!

檢查你的 Github 帳戶——你會看到你所做的一切都反映在那裡。 您還可以看到不同的提交消息、我們所做的分支和提交的數量,以及對 repo 的任何貢獻者和他們所做的事情。

就是這樣! 恭喜! 您剛剛改變了基本的 git 工作流程。 你可以做的方式,途徑,方式比這與GIT更複雜的東西,但是這是非常接近你將每天的基礎上,當你只是...... gitting開始可能使用。

哦,還有一件事!

我在本文中使用的 Github存儲庫 myfirstrepo仍然可用。 隨意檢查它,玩它,分叉它,克隆它,或者任何你認為會讓你習慣使用 git 的東西。 玩得開心! (感謝你對我和我所有的 git 雙關語的包容。)

文章縮略圖由 MchlSkhrv/shutterstock.com 提供