1. 程式人生 > >初學者Git和GitHub簡介(教程)

初學者Git和GitHub簡介(教程)

翻譯&轉載:https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners

 

初學者Git和GitHub簡介(教程)

 

我們 在HubSpot 為初學者帶來了一個使用git和GitHub的研討會。我首先瀏覽了關於git的基礎知識和背景的幻燈片演示,然後我們分成小組來完成我建立的教程,以模擬在一個大型協作專案上工作。事件發生後我們得到了反饋,這是一個有用的,實用的介紹。因此,如果您也是git的新手,請按照以下步驟輕鬆更改程式碼庫,開啟拉取請求(PR),並將程式碼合併到主分支中。一個重要的git和GitHub術語以粗體顯示,並附有官方git參考資料的連結。 

 

第0步:安裝git並建立一個GitHub帳戶 

你要做的前兩件事是安裝git並建立一個免費的GitHub帳戶。

按照此處的說明 安裝git(如果尚未安裝)。請注意,對於本教程,我們將僅在命令列上使用git。雖然有一些很棒的git GUI(圖形使用者介面),但我認為首先使用git特定命令學習git更容易,然後一旦你對命令更熟悉就嘗試git GUI。 

完成後,在此處建立一個GitHub帳戶  。(帳戶對於公共儲存庫是免費的,但私有儲存庫需要付費。)

 

現在,你將有機會親自使用 Git,並在 Asteroids 版本庫上練習使用這些命令。為此,必須安裝 Git。如果已安裝 Git,請使用命令 git --version

 檢視其版本。如果版本為 1.8 或更高,則可以繼續下一步。否則,強烈建議你進行升級,因為 Git 在版本 1.8 中添加了許多新功能,而且我們假定你裝有該版本。

如果你還未安裝 Git,或者如果需要升級,現在請按照此 Wiki 頁面上的說明來執行操作。如果遇到問題,請在論壇中發貼求助。

 

第1步:建立一個本地git儲存庫 

使用git在本地計算機上建立新專案時,首先要建立一個新的  儲存庫 (或者通常是“ repo”)。 

要使用git,我們將使用終端。如果您對終端和基本命令沒有太多經驗,請檢視

本教程  (尤其是“導航檔案系統”和“移動”部分)。

首先,開啟終端並使用cd(更改目錄)命令移動到要將專案放置在本地計算機上的位置。例如,如果桌面上有“專案”資料夾,則可以執行以下操作:

要在資料夾的根目錄中初始化git儲存庫,請執行git init 命令:  

$ git init

 

第2步:向repo新增新檔案

繼續使用您喜歡的任何文字編輯器或執行touch命令將新檔案新增到專案中。 

一旦你在包含git repo的資料夾中新增或修改了檔案,git就會發現在repo中已經進行了更改。但是,git不會正式跟蹤檔案(也就是說,將其置於提交中 - 我們將在下面詳細討論提交),除非您明確告訴它。

建立新檔案後,您可以使用該git status命令檢視git知道哪些檔案存在。

MacdeMacBook-Pro:TangPoets mac$ git status
位於分支 master
您的分支領先 'origin/master' 共 1 個提交。
  (使用 "git push" 來發布您的本地提交)

無檔案要提交,乾淨的工作區

這基本上是說,“嘿,我們注意到你建立了一個名為mnelson.txt的新檔案,但除非你使用' git add' 命令,否則我們不會對它做任何事情。”

 

插曲:登臺環境,提交和您

您第一次學習git時最困惑的部分之一是登臺環境的概念以及它與提交的關係。

一個  承諾 是因為你犯了一個提交最後一次是什麼檔案你已經修改的記錄。基本上,您對repo進行了更改(例如,新增檔案或修改檔案),然後告訴git將這些檔案放入提交中。

提交構成了專案的本質,允許您隨時返回專案狀態。

那麼,你如何告訴git將哪些檔案放入提交中?這是登臺環境 或  索引的用武之地。如步驟2所示,當您對repo進行更改時,git會注意到檔案已更改但不會對其執行任何操作(例如在提交中新增它)。

要將檔案新增到提交,首先需要將其新增到登臺環境。為此,您可以使用  git add<filename> 命令(請參閱下面的步驟3)。

一旦你使用git add命令將你想要的所有檔案新增到登臺環境,你就可以告訴git使用git commit 命令將它們打包到一個提交中。 

注意:暫存環境(也稱為“暫存”)是新的首選術語,但您也可以將其稱為“索引”。

# 使用git add . 命令將此目錄下新增加的所有檔案提交到暫存區中
$ git add .

# 使用git add filename 命令將特定檔案提交到暫存區中
$ git add [filename]
# 使用 git commit -m ' your message ' 命令,將修改提交到本地git倉庫
$ git commit -m ' your message ' 

 

第3步:將檔案新增到登臺環境

使用git add命令將檔案新增到登臺環境。 

如果重新執行git status命令,您將看到git已將該檔案新增到登臺環境(請注意“要提交的更改”行)。  

# 使用 git status 檢視當前狀態
$ git status

 再次重申,該檔案已  不 尚未新增到提交,但它即將被。

 

第4步:建立提交

是時候建立你的第一個提交了!

執行命令 git commit -m "Your message about the commit"

# 使用 git commit -m ' your message ' 命令,將修改提交到本地git倉庫
$ git commit -m ' your message ' 


# 使用 git log 檢視剛才的提交記錄,你會看見如下資訊 ,其中HEAD指示當前你的提交狀態,master表示您當前的分支名稱,(origin/master) 表示遠端倉庫當前的提交狀態 ,每個commit後面有個長串的hash值
$ git log 
commit 204f2469f11888cafdbd9db41650da9764c9c149 (HEAD -> master)
Author: miazzy <[email protected]>
Date:   Sat Dec 8 21:24:33 2018 +0800
     新增主分支說明
commit b8ee33f8333ab85697f0e29cea7b2ea390380647 (origin/master)
Author: miazzy <[email protected]om>
Date:   Fri Nov 2 12:35:04 2018 +0000
    Add contribution guide


# 使用 git reset hashcode , 回退到先前的提交,這個hashcode就是commit後面的一長串值,不過你不用填全部,只取前面幾個就行了,下面命令,將回退到 (origin/master)的提交狀態上來
$ git reset b8ee33 

提交結束時的訊息應該與提交包含的內容相關 - 也許它是一個新功能,也許它是一個錯誤修復,也許它只是修復一個錯字。不要像“asdfadsf”或“foobar”這樣的訊息。這讓其他人看到你的承諾讓人傷心。非常,非常,悲傷。

 

第5步:建立一個新分支

現在你已經做了一個新的提交,讓我們嘗試一些更高階的東西。

假設您要建立新功能但擔心在開發功能時對主專案進行更改。這就是git分支的 用武之地。 

分支允許您在專案的“狀態”之間來回移動。例如,如果要向網站新增新頁面,則可以為該頁面建立新分支,而不會影響專案的主要部分。完成頁面後,您可以  更改從分支合併到主分支中。當你建立一個新的分支時,  Git會  跟蹤你的分支“分支”的提交,因此它知道所有檔案背後的歷史。 

假設您在主分支機構並且想要建立一個新分支來開發您的網頁。這是你要做的:跑。此命令將自動建立一個新分支,然後在其上“檢查出來”,這意味著git會將您移動到主分支之外的那個分支。 git checkout -b <my branch name>

執行上述命令後,您可以使用該git branch命令確認您的分支已建立:

# 使用 git branch 分支名稱 建立新的分支,下面命令將建立一個名為test的分支
$ git branch test

# 使用 git branch 命令,檢視當前所有分支資訊,即git branch 
$ git branch 

# 使用 git checkout 分支名稱,將切換到制定分支
$ git checkout master  #切換到master分支
$ git checkout test    #切換到剛才建立的test分支上

旁邊帶有星號的分支名稱表示您在該給定時間指向的分支。 

現在,如果您切換回主分支並進行更多提交,則在將這些更改合併到新分支之前,新分支將不會看到任何這些更改。

 

第6步:在GitHub上建立一個新的儲存庫

如果您只想在本地跟蹤程式碼,則無需使用GitHub。但是如果你想與團隊合作,你可以使用GitHub來協同修改專案的程式碼。 

要在GitHub上建立新的repo,請登入並轉到GitHub主頁。您應該看到一個綠色的“+新儲存庫”按鈕: 

Git_101_Screenshot1-2.png

點選按鈕後,GitHub會要求您為您的倉庫命名,並提供簡要說明:

Git_101_Screenshot_2-1.png

填寫完資訊後,按“建立儲存庫”按鈕建立新的儲存庫。

GitHub將詢問您是否要從頭開始建立新的倉庫,或者是否要新增您在本地建立的倉庫。在這種情況下,由於我們已經在本地建立了一個新的repo,我們希望將它推送到GitHub,所以請按照'....或從命令列推送現有的儲存庫'  部分: 

 (您需要將第一個命令列中的URL更改為GitHub在此部分中列出的內容,因為您的GitHub使用者名稱和repo名稱不同。)

PS:當前您也可以通過搭建GitLab倉庫,來建立一個類似GitHub一樣的執行在企業內部的私有Git倉庫平臺

 

第7步:將分支推送到GitHub

現在我們將把你的分支中的提交送到你的新GitHub倉庫。這允許其他人看到您所做的更改。如果它們已獲得儲存庫所有者的批准,則可以將更改合併到主分支中。

要將更改推送到GitHub上的新分支,您需要執行  GitHub將自動在遠端儲存庫上為您建立分支: 

git push origin yourbranchname

 您可能想知道上面命令中“origin”字的含義。當您將遠端儲存庫克隆到本地計算機時,git會為您建立別名。在幾乎所有情況下,這個別名都被稱為“ 起源”。它本質上是遠端儲存庫URL的簡寫。因此,要將更改推送到遠端儲存庫,您可以使用以下命令:或

 git push [email protected]:git/git.git yourbranchname

git push origin yourbranchname

(如果這是您第一次在本地使用GitHub,它可能會提示您使用您的GitHub使用者名稱和密碼登入。)

如果重新整理GitHub頁面,您會看到說明您的名字的分支剛剛被推入儲存庫。您還可以單擊“分支”連結以檢視其中列出的分支。

Git_101_Screenshot2.png

現在單擊上面螢幕截圖中的綠色按鈕。我們打算提出拉動請求

 

第8步:建立拉取請求(PR)

拉取請求(或PR)是一種提醒回購所有者您希望對其程式碼進行某些更改的方法。它允許他們在將更改放在主分支上之前檢查程式碼並確保它看起來很好。

這是PR頁面在您提交之前的樣子:

Git_101_Screenshot_4.png

 這就是您提交PR請求後的樣子:

Git_101_Screenshot_5.png

 您可能會在底部看到一個顯示“合併拉取請求”的綠色大按鈕。單擊此按鈕表示您將更改合併到主分支中。

請注意,此按鈕不會始終為綠色。在某些情況下,它會是灰色的,這意味著你面臨著合併衝突。這是當一個檔案中的更改與另一個檔案中的更改衝突時,git無法確定要使用的版本。你必須手動進入並告訴git使用哪個版本。

有時您將成為共同所有者或回購的唯一所有者,在這種情況下,您可能不需要建立PR來合併您的更改。但是,建立一個仍然是一個好主意,這樣您就可以保留更新的更新歷史記錄,並確保在進行更改時始終建立新分支。

 

第9步:合併PR

繼續,然後單擊綠色的“合併拉取請求”按鈕。這會將您的更改合併到主分支中。

Git_101_Screenshot_6.png

 當你完成後,我建議你刪除你的分支(太多的分支可能會變得混亂),所以也要點選那個灰色的“刪除分支”按鈕。

您可以通過單擊新倉庫第一頁上的“提交”連結,仔細檢查您的提交是否已合併。

Git_101_Screenshot_7.png

 這將顯示該分支中所有提交的列表。你可以看到我剛剛合併的那個(Merge pull request#2)。

Git_101_Screenshot_8.png

您還可以 在右側看到提交的雜湊碼。雜湊碼是該特定提交的唯一識別符號。它對於引用特定提交和撤消更改(使用git revert <hash code number> 命令回溯)非常有用。

$ git revert HashCodeNumber

 

第10步:在GitHub上更改回到您的計算機

現在,GitHub上的回購看起來與您在本地機器上的回購略有不同。例如,您在分支中進行的並且合併到主分支的提交在本地計算機的主分支中不存在。

為了獲得您或其他人在GitHub上合併的最新更改,請使用該git pull origin master 命令(在處理master分支時)。

git pull origin master

這將顯示已更改的所有檔案及其更改方式。

現在我們可以git log再次使用該命令檢視所有新提交。

(您可能需要將分支切換回主分支。您可以使用該git checkout master 命令執行此操作。)

# 切換回主分支
$ git checkout master

 

第11步:享受你的榮耀

您已成功製作PR並將程式碼合併到主分支。恭喜!如果您想更深入地潛水,請檢視此Git101資料夾中的檔案, 以獲取有關使用git和GitHub的更多提示和技巧。 我還建議您花一些時間與您的團隊一起模擬像我們這樣做的小型團隊專案。讓您的團隊使用您的團隊名稱建立一個新資料夾,並新增一些帶有文字的檔案。然後,嘗試將這些更改推送到此遠端倉庫。這樣,您的團隊就可以開始更改他們最初未建立的檔案並使用PR功能進行練習。並且,使用GitHub上的git blame和git history工具來熟悉跟蹤檔案中的更改以及進行這些更改的人員。