Git 和 GitHub 教程——版本控制入門
Learn to Code RPG 是一個完全開源免費的項目,你將在其中自學編程,結交科技行業的朋友,並實現成爲開發者的夢想。社區的志願貢獻者們正在協作翻譯不同語言版本,感興趣參與中文版翻譯的朋友們可以聯繫小助手(微信:fcczhongguo)。歡迎大家閱讀《從 freeCodeCamp 視覺小說遊戲 Learn to Code RPG 學習計算機科學概念》瞭解詳情。
Git 和 GitHub 是各個領域的開發者都應該學習的兩項技術。
如果你是一個初級開發者,你可能會認爲這兩個術語意味着同樣的事情——但它們是不同的。
本教程將幫助你瞭解什麼是 Git 和版本控制,你需要知道的基本 Git 命令,如何使用其功能來提高工作效率,以及如何使用 GitHub 來擴展這些功能。
本指南對初學者友好,因爲例子將非常容易理解。它也將是一個通用的教程,所以不管你最喜歡的編程語言是什麼,你都可以跟着學。
對於我們的項目,我們將做一個寫在文本(txt)文件中的待辦事項清單。你將看到我們如何使用 Git 的功能來工作,並創建列表的最終版本。
你需要先準備好的
爲了完成本教程,你將需要以下條件:
-
一個命令行界面(或者說是終端)
-
一個你喜歡的文本編輯器(我將使用 VS Code)
-
一個 GitHub 賬戶
什麼是 Git
Git 是一個版本控制系統,可以讓你跟蹤你對文件所做的修改。使用 Git,你可以恢復到文件的各種狀態(就像一臺時間旅行機)。你也可以製作一個文件的副本,對該副本進行修改,然後將這些修改合併到原來的副本中。
例如,你可以在一個網站的登陸頁面上工作,發現你不喜歡這個導航欄。但與此同時,你可能不想開始改變它的組件,因爲它可能會變得更糟。
有了 Git,你可以爲該文件創建一個相同的副本,然後對導航欄進行修改。然後,當你對你的改動感到滿意時,你可以把副本合併到原文件中。
你並不侷限於將 Git 僅僅用於源代碼文件,你也可以用它來跟蹤文本文件,甚至是圖像。這意味着,Git 不僅僅是爲開發者服務的,任何人都可以找到它的幫助。
如何安裝 Git
爲了使用 Git,你必須在你的電腦上安裝它。要做到這一點,你可以在官方網站 下載最新版本。你可以從給出的選項中下載適合你的操作系統。
你也可以用命令行來安裝 Git,但由於每個操作系統的命令都不一樣,我們將專注於更通用的方法。
如何配置 Git
我將假設此時你已經安裝了 Git。爲了驗證這一點,你可以在命令行上運行這個命令:git --version
。這將顯示當前安裝在你電腦上的版本。
接下來,你需要做的是設置你的用戶名和電子郵件地址。Git 會使用這些信息來識別誰對文件進行了修改。
要設置你的用戶名,輸入並執行這些命令 : git config --global user.name "YOUR_USERNAME"
和 git config --global user.email "YOUR_EMAIL"
。請確保用你選擇的值替換 "YOUR_USERNAME"
和"YOUR_EMAIL"
。
如何在 Git 中創建和初始化一個項目
我們終於完成了安裝和設置 Git 的工作,現在是時候創建我們的項目了。
我在桌面上創建了一個名爲 Git and GitHub tutorial
的文件夾。使用命令行,進入到你新項目的文件夾位置。對我來說,我將運行以下命令。:
cd desktop
cd Git and GitHub tutorial
如果你是命令行的新手,並且還在學習如何使用它來查看你的電腦文件夾,那麼我建議使用微軟的 Visual Studio Code
。它是一個代碼編輯器,有一個內置的終端來執行命令。你可以下載它這裏。
安裝 VS Code 後,在編輯器中打開你的項目,爲你的項目打開一個新的終端。這將自動把終端 / 命令行指向你的項目的路徑。
現在要初始化你的項目,只需運行git init
。這將告訴 Git 準備好開始監視你的文件的每一個變化。它看起來像這樣:
git init
第一行是關於我的電腦的信息和文件夾存在的路徑。第二行是命令git init
,第三行是發回的響應,告訴我我的倉庫(repo)已經被初始化了。它被認爲是空的,因爲我們還沒有告訴 Git 要追蹤哪些文件。
倉庫只是定義一個被 Git 監視 / 跟蹤的項目的另一種方式。
Git 項目文件
我只創建了一個名爲 "todo.txt" 的文件。這個文件看起來是這樣的:
MY TO-DO LIST
1. Write an article.
2. Code.
3. Study books.
4. Attend classes on time.
5. Visit aunt.
6. Apply for remote jobs.
在我們繼續學習其他 Git 命令之前,讓我們先談談 GitHub。
什麼是 GitHub
GitHub 是一個爲 Git 存儲庫提供的在線託管服務。想象一下,你在家裏做一個項目,當你不在的時候,也許是在朋友那裏,你突然想起了一個代碼錯誤的解決方案,讓你幾天都坐立不安。
你不能進行這些修改,因爲你的電腦不在你身邊。但如果你的項目託管在 GitHub 上,你就可以在你能接觸到的任何電腦上用命令訪問和下載該項目。然後你就可以進行修改,並將最新版本推送回 GitHub。
總之,GitHub 可以讓你在他們的平臺上存儲你的 repo。GitHub 的另一個了不起的功能是你可以在任何地方與其他開發者進行合作。
現在我們已經在本地創建並初始化了我們的項目,讓我們把它推送到 GitHub。
如果你是初學者,你會遇到一些新的術語,比如推送(push)、提交(commit)、添加(add)等等——但不要被它們嚇倒,只要多加練習,你就能記住這些術語和它們的作用。
如何推送一個倉庫到 GitHub
我將把本節分爲幾個步驟,以幫助你更清楚地瞭解這個過程。
第一步 - 創建一個 GitHub 賬戶
爲了能夠使用 GitHub,你必須先創建一個賬戶。你可以在他們的 [網站](https://github.com/) 創建。
第二步 - 創建一個存儲庫
你可以點擊頁面右上角的+
符號,然後選擇 “New repository”。給你的版本庫起個名字,然後向下滾動並點擊 “Create repository”。
第三步 - 添加和提交文件
在我們添加(add)和提交(commit)我們的文件之前,你需要了解一個文件被 Git 跟蹤的階段。
已經提交的狀態
當一個文件的所有修改都被保存在本地的 repo 中時,該文件就處於**提交的(committed)**狀態。處於提交階段的文件是可以被推送到遠程 repo(在 GitHub 上)的文件。
已修改狀態
處於**修改(modified)**狀態的文件已經做了一些修改,但還沒有保存。這意味着該文件的狀態與之前在提交狀態下的狀態有了改變。
暫存狀態
處於**暫存(staged)**狀態的文件意味着它可以被提交了。在這種狀態下,所有必要的修改都已經完成,所以下一步就是把文件移到提交狀態。
你可以把 Git 想象成一臺攝像機,這樣就能更好地理解。只有當文件到達提交狀態時,相機纔會進行快照。在這個狀態之後,相機開始比較正在對同一文件進行的修改和最後一次快照(這就是修改狀態)。而當所需的修改完成後,文件就會被分階段移動到提交狀態,以便進行新的快照。
目前,這可能是一個很大的信息量,但不要氣餒——隨着實踐的進行,它變得更容易。
如何在 Git 中添加文件
當我們第一次初始化我們的項目時,該文件沒有被 Git 追蹤到。要做到這一點,我們使用這個命令git add .
,將添加當前目錄下所有文件。如果你想添加一個特定的文件,也許是一個名爲about.txt
的文件,你可以用git add about.txt
。
現在,我們的文件已經處於暫存狀態(staged state)。這條命令之後你不會得到迴應,但要知道你的文件處於什麼狀態,你可以運行git status
命令。
如何在 Git 中提交文件
文件下一個狀態處於提交狀態(committed state)。爲了提交我們的文件,我們使用git commit -m "first commit"
命令。
命令的第一部分 "git commit" 告訴 Git,所有被暫存的文件都準備好提交了,所以是時候進行快照了。第二部分 -m "first commit"
是提交信息。-m
是信息的縮寫,而括號內的文字是提交信息。
執行這個命令後,你應該得到一個類似這樣的響應:
git commit
現在我們的文件已經處於提交狀態(committed state)。
第四步 - 推送倉庫到 GitHub
創建完倉庫後,你的瀏覽器應該跳到一個頁面,告訴你如何在本地創建一個倉庫或推送一個現有倉庫。
在我們的例子中,項目已經存在於本地,所以我們將使用 “.…or push an existing repository from the command line” 部分的命令。這些是命令:
git remote add origin https://github.com/ihechikara/git-and-github-tutorial.git
git branch -M main
git push -u origin main
第一個命令 git remote add origin [https://github.com/ihechikara/git-and-github-tutorial.git](https://github.com/ihechikara/git-and-github-tutorial.git)
,在你的本地 repo 和 Github 上的遠程 repo 之間建立連接。
你的遠程項目的 URL 應該與上面的完全不同。所以要根據你的實際 URL,確保你是按照步驟,用你自己的遠程 repo 工作。執行這個命令後,你通常不會得到迴應,但要確保你有互聯網連接。
第二個命令 git branch -M main
將主分支的名字改爲 "main"。默認的分支可能被創建爲 "master",但 "main" 是現在這個 repo 的標準名稱。這裏通常沒有迴應。
最後一個命令 git push -u origin main
將你的 repo 從本地設備推送到 GitHub。你應該得到與此類似的迴應:
git push
爲了幫助你加深對文件階段的理解,我將對文件進行修改,然後將新版本推送到 GitHub。
回顧一下,我們的文件現在處於提交狀態。讓我們對文件進行修改,並注意到這些狀態。
我將在待辦事項列表中添加一個新任務:
MY TO-DO LIST
1. Write an article.
2. Code.
3. Study books.
4. Attend classes on time.
5. Visit aunt.
6. Apply for remote jobs.
7. Practice code
添加新任務後,運行git status
命令。你應該看到這樣的情況:
git status
在對文件進行修改後,它移到了修改狀態 -- 但它還沒有被分期提交,所以你還不能把它推送到 GitHub。Git 並沒有對這個當前狀態進行最終的快照,因爲它只是將我們現在所做的修改與最後的快照進行比較。
現在我們要添加(stage)這個文件,然後提交(commit )並推送(push)它。這與上一節的做法相同。
我們首先使用git add .
添加文件,它添加了當前目錄下的所有文件(在我們的例子中是一個文件)。然後我們通過運行git commit -m "added new task"
來提交該文件,接着是git push -u origin main
。
這就是將修改過的文件推送到 GitHub 的三個步驟。添加(add),提交(commit),然後推送(push)。我希望你現在理解了文件階段和與之相關的命令。
如何在 Git 中使用分支(branch)
有了分支,你可以在不破壞原始副本的情況下,創建一個你想要處理的文件副本。你可以把這些修改合併到原始副本上,或者讓分支保持獨立。
在我們開始使用分支之前,我想給大家看一下我們的 repo 的可視化表示,它看起來像這樣:
上圖顯示了我們的主分支和最近的兩次提交(第一次提交和添加的新任務提交)。
在這一點上,我想在列表中添加更多的任務,但我還不確定是否要把它們放在主列表中。因此,我將創建一個名爲 test
的新分支,看看加入更多任務後我的列表會是什麼樣子。
要創建一個新的分支,運行這個命令。git checkout -b test
。我將把它分開來。
checkout
告訴 Git 它應該切換到一個新的分支。b
告訴 Git 創建一個新的分支。test
是要創建和切換到的分支的名字。以下是你應該得到的響應:
git checkout -b
現在我們已經創建了一個新的分支,這就是我們的 repo 的樣子:
git branch
我們從上次提交的狀態中創建了新的分支。現在讓我們爲這個新分支添加更多任務。
MY TO-DO LIST
1. Write an article.
2. Code.
3. Study books.
4. Attend classes on time.
5. Visit aunt.
6. Apply for remote jobs.
7. Practice code
8. Complete internship task.
9. Practice chess openings.
10. Solve chess puzzles.
11. Check exam schedule.
我增加了四個新任務。要把新的狀態合併到主分支(main branch)。你必須先把這個分支分階段並提交,由於我們在上一節中做了兩次,我就不詳細介紹如何提交。
你應該自己試着做一下,這樣你就會明白它是如何工作的。作爲提示,先添加文件,然後帶着信息提交(參考上一節的細節,告訴你如何做)。
提交完測試分支後,通過運行以下命令切換回主分支,git checkout main
。
你是否注意到,我們沒有添加-b
?這是因爲我們不是在創建一個新的分支,而是切換到一個現有的分支。你可以通過運行git branch
命令來檢查你的 repo 中存在的所有分支。
現在,我們可以通過運行git merge test
,將測試分支中的修改合併到主分支中。這時,你會看到測試分支中的所有改動都反映在主分支中。你還應該收到類似這樣的回覆:
git merge
下面是我們的 repo 的圖示:
如果你繼續將你的 repo 推送到 GitHub,你會發現測試分支不會被推送。它只會保留在你的本地 repo 中。如果你想推送你的測試分支,可以用git checkout test
切換到該分支,然後運行git push -u origin test
。
如何在 Git 中拉取一個倉庫
在 Git 中拉取意味着將遠程倉庫的當前狀態克隆到你的電腦 / 倉庫中。當你想在不同的電腦上操作你的倉庫時,或者當你在網上爲一個開源項目做貢獻時,這就很方便了。
要測試這一點,不用擔心切換到新的電腦。只要運行cd ..
就可以離開當前目錄並返回上一層目錄。在我自己的例子中,我已經導航回到了我的桌面。
進入 GitHub,在你的倉庫的主頁上,你應該看到一個綠色的按鈕,上面寫着 "code"。當你點擊這個按鈕時,你應該在一個下拉菜單中看到一些選項。繼續並複製 HTTPS URL。
之後,運行git clone YOUR_HTTPS_URL
。這個命令會把遠程版本庫拉到你的本地電腦上,放在一個叫git-and-git-tutorial
的文件夾裏。就是說:
git clone
結語
本文介紹有助於你開始使用 Git 的基本命令。我們還開始學習如何使用 GitHub。
如果你已經跟到了這一步,那麼恭喜你,你已經可以開始了。現在無論你使用什麼編程語言,都可以在你的項目中使用 Git。
你應該知道,這些並不是 Git 中存在的所有命令,所以你可以隨時做更多的研究來了解更多的命令和它們的用途。這篇文章和手冊是很好的開始。這個 gist 是查看更多 Git 命令的詳細列表的好地方。
祝你編程愉快!
原文鏈接:https://www.freecodecamp.org/news/git-and-github-for-beginners/
作者:Ihechikara Vincent Abba
譯者:luojiyin
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/e0nEJFwiZQqxupSJVvouxg