# 第一部分:什麼是版本控制? ## 簡介版本控制的概念 版本控制(Version Control)是一種軟體開發中的關鍵概念。它是一種追蹤和管理程式變更的方法,以確保項目的歷史記錄和協同工作的效率。版本控制允許您記錄程式的不同版本,並追蹤每個版本的更改內容。 ## 為什麼版本控制對軟體開發如此重要 版本控制的重要性無法被低估。它提供了以下優點: - **版本歷史記錄:** 您可以輕鬆查看和恢復以前的程式版本,這在錯誤修復和回滾變更時特別有用。 > **真實故事:** > 我們經常使用Jupyter Notebook提交作業。有時候,我會運行需要數小時的程式,然後不小心清除了運行紀錄。這對我來說是一個困擾,因為我可能需要重新運行整個程式,浪費了寶貴的時間。然而,當我開始使用Git時,我發現它就像是一個能夠提供「復原的 check point」的工具。使用Git,我可以輕鬆地查看以前的提交,甚至能夠使用 "discard change" 一鍵復原運行紀錄,回到以前的版本,這讓我的學習和作業提交變得更加輕鬆。 > ~~對這在我昨天就發生~~ - **協同工作:** 多個開發者可以同時工作在項目上,而不會干擾彼此的進度。版本控制合併功能使協同工作變得無縫。 > **問題**: 大學生在協同工作中可能遇到的一個常見問題是相互之間的程式干擾。當多名學生同時修改相同的程式文件時,可能會導致冲突和錯誤。此外,學生可能會不知道其他人的進度,從而難以協調工作。 > **解決方案**: 版本控制系統如Git可以解決這些問題。學生可以在各自的分支上工作,這樣他們的修改不會直接影響到主程式庫。當他們完成工作並準備合併時,他們可以提交合併請求,Git會自動檢查是否存在冲突。如果有冲突,Git將提示他們解決這些冲突,以確保程式整合順利進行。此外,使用版本控制,學生可以輕鬆查看其他人的提交,了解他們的進度和所做的更改,這有助於更好地協調工作。 > ~~大學生普遍使用共用檔案傳遞方式進行協同開發,但這往往會導致時間浪費在處理衝突和合併上,這是一個常見的問題尤其是當你們在繳交期限前時。版本控制合併功能使協同工作變得無縫。~~ - **錯誤追蹤:** 每個變更都有記錄,這使得跟蹤和修復錯誤變得更加容易。 > **案例**: 假設一組大學生正在協同開發一個Python應用程序。其中一名學生提交了一個包含錯誤的程式,但並未立即發現。另一名學生在進行程式審查時發現了錯誤,但無法得知確切位置。在過去,這種情況可能會導致時間浪費,因為學生們需要來回傳遞共用檔案,並可能會忘記錯誤的具體位置。 > **解決方案**: 使用版本控制,這個情況可以更有效地處理。當發現錯誤時,學生可以通過提交錯誤的程式變更來記錄問題。然後,其他學生可以輕鬆查看提交歷史記錄,找到錯誤的具體位置並進行修復。版本控制系統還允許在提交消息中添加註釋,以提供關於錯誤的詳細信息,這有助於更快地解決問題。 ## 協同工作的價值 協同工作是軟體開發的核心。版本控制不僅可以幫助開發者更好地協同工作,還可以改善項目的品質和可維護性。它使得多個人可以同時工作在同一程式庫中,而不會造成混亂。開發者可以提交其更改,並透過合併將它們整合到主程式庫中,實現協同開發的無縫體驗。 這就是版本控制的重要性,我們將在本課程中深入探討如何使用 Git 和 GitHub 來實現版本控制和協同工作,並學習從大型企業的最佳實踐中汲取經驗。 ~~除非你想自行創業啦~~ # 第二部分:註冊 GitHub 帳號 ## 步驟 1:訪問 GitHub 官方網站 1. 打開您的網頁瀏覽器,並在網址欄中輸入 [https://github.com](https://github.com),然後按 Enter。 ## 步驟 2:註冊 GitHub 帳號 2. 在 GitHub 首頁,您會看到一個 [Sign Up](https://github.com/join)(註冊)按鈕,點擊它。 3. 這將帶您到註冊頁面。在這裡,您需要提供以下資訊: - **Username**(使用者名稱):選擇一個唯一的使用者名稱,它將用於您的 GitHub URL。請確保它是獨特的,否則 GitHub 將提示您選擇另一個。 - **Email address**(電子郵件地址):輸入您的常用電子郵件地址。這將用於帳號相關通知和回復密碼。您也可以在之後添加學校的電子郵件地址(這能領取學生福利)。 填寫完畢後,點擊 [Create account](https://github.com/join)(建立帳號)。 ## 步驟 3:驗證您的帳號 4. GitHub 將要求您進行驗證。它會向您提供的電子郵件地址發送一封驗證郵件。請打開您的電子郵件並點擊驗證鏈接。 ## 步驟 4:完善註冊信息 5. 驗證後,您將被引導到完善您的 GitHub 帳號信息。在這一步,您可以選擇以下選項: - **Choose your personal plan**(選擇個人方案):您可以選擇免費的個人帳號方案,或者根據需求選擇其他方案。 - **Tailor your experience**(自定義您的體驗):您可以選擇您感興趣的技術主題,以便 GitHub 推薦相關的項目和社區。 6. 填寫完畢後,點擊「Submit」。 ## 步驟 5:選擇您的初始設置 7. 在此步驟中,您可以選擇一些帳號和隱私設置,以確保您的 GitHub 體驗符合您的需求。根據您的偏好進行設定,然後點擊「Submit」。 ## 步驟 6:註冊完成 8. 恭喜您,您已成功註冊 GitHub 帳號!您現在可以開始使用 GitHub,創建儲存庫、參與項目、上傳程式等等。 # 第三部分:使用 GitHub Desktop 今天我們要教你使用最古老的工具來控制版本——石頭和錘子 (bash and command line)! ## 具體教學請看: {%youtube bTbVfWIucMU %} ~~找對工具很重要~~ 事實上,我們將使用現代、易於使用的圖形介面來掌握版本控制。 當然有些進階功能仍需 Command Line, 不過很少用到 ! > [Git 命列列教學](https://www.maxlist.xyz/2018/11/02/git_tutorial/) ## 步驟 1:下載並安裝 GitHub Desktop 在這一部分,我們將學習如何使用 GitHub Desktop 來更輕鬆地管理 GitHub 儲存庫。 1. 首先,讓我們下載和安裝 GitHub Desktop。對於 Windows 和 macOS 用戶,您可以在官方網站上找到安裝程式:[GitHub Desktop 下載](https://desktop.github.com/)。 如果您是 Ubuntu(或其他Linux發行版)用戶,您可以考慮使用非官方的 GitHub Desktop 版本,可以在這個鏈接下載:[GitHub Desktop for Linux](https://github.com/shiftkey/desktop/releases/)。 請點擊相應的連結,然後按照您的作業系統的指示來安裝 GitHub Desktop。 ## 步驟 2:初始化新的儲存庫或複製現有儲存庫 2. 安裝完成後,打開 GitHub Desktop。首次打開時,您需要登入您的 GitHub 帳號。 3. 回到 [https://github.com](https://github.com) 4. 如果您想要開始一個新的專案,點擊左上角的「File」,然後選擇「New Repository」(新儲存庫)。  5. 在「Repository settings」(儲存庫設置)中,填寫儲存庫名稱、描述,然後選擇「Initialize this repository with a README」(使用 README 初始化儲存庫)。接著點擊「Create repository」(創建儲存庫)。 6. 點擊`Set up in Desktop`  7. 點擊 `Clone`  8. 點左上角查看 Repository,你的程式或者你 Clone 的程式都在此  9. 那打開資料夾,開始寫點東西吧  10. 我們來做個人頁面吧! [網頁模板連結](https://bootstrapmade.com/bootstrap-personal-templates) ## 步驟 3:創建新的提交(Commit) 10. 在 GitHub Desktop 中,您將看到剛剛變更的程式已經被追蹤。對於任何更改,您需要創建提交(commit)。 11. 在左下角的「Summary」(摘要)欄中輸入提交摘要,並在下方的「Description」(描述)欄中提供詳細描述。  12. 點擊「Commit to main」(提交到主分支)來保存更改。 ## 步驟 4:推送提交到 GitHub 13. 在您完成一些提交後,您可能希望將它們推送到 GitHub 上的遠端儲存庫。 14. 點擊右上角的「Push origin」(推送到遠端)按鈕,將您的提交同步到 GitHub。(如果是該儲存庫第一個提交名稱是 「Push brench」 建立樹幹)  15. 檢查雲端  ## 步驟 5:管理分支(Branch) 使用 GitHub Desktop,您可以輕鬆管理分支(branch),這是版本控制中非常重要的一個概念。分支讓您能夠同時進行不同的工作,而不會干擾主要程式。 16. 在左上角的分支下拉菜單中,您可以進行以下操作: - 創建新分支:這是用於開展新工作的好方法。每個分支都是獨立的,可以在不影響主要程式的情況下進行修改。 - 切換到不同的分支:您可以輕鬆地切換到不同的分支,以在不同的工作區域進行工作。  17. 讓我們實際操作一下。我們創建一個模擬別的開發者修改的分支:  18. 回到 GitHub Desktop,點擊「Fetch」(同步)來更新您的儲存庫。您將會看到分支多了一個。   19. 現在,您可以切換到剛剛創立的分支,編輯程式碼,然後進行提交(Commit)並推送(Push)您的更改。  20. 如果您回到 `Main` 分支,您將會注意到在檔案總管中,您剛剛所做的分支修改不會出現。這是因為分支是獨立的,不會影響主要程式。 21. 再回到剛創立的分支,您將會看到您的內容又回來了。這是版本控制的魔法,讓您能夠同時進行不同的工作而不會混淆。 ## 步驟 6:管理衝突與合併 (Merge) 22. 我們提交了一些變更,這些變更與 `Main` 分支中的變更完全相同。  23. 回到 [https://github.com](https://github.com),我們切換到網站上的另一個分支。  24. 嘗試建立一個 `Pull Request`(拉取請求)。  25. 選擇要推送的分支,這也可以是從 Fork 來的分支。   這是從 Fork 來的分支,也就是協同開發的推送。 26. 您會發現它無法自動合併,因為存在衝突。現在,我們回到 GitHub Desktop 來解決它。  27. 打開分支目錄的 Pull Request,選擇推送目標分支 (`Main`)。  28. 在這一步,我們選擇 `Create a merge commit`(創建一個合併提交),這將允許我們手動解決衝突。  29. 您必須解決左側的警告,然後才能進行合併。  30. 以 VS Code 為例,您將注意到衝突的位置需要您進行選擇。您可以選擇保留其中一個變更,或者將兩個都保留,又或者進行自己的手動修正。在這裡,我們選擇保留兩個變更。  31. 回到 GitHub Desktop,您會注意到綠色勾號,表示現在可以進行合併。只需提交(Commit)並推送(Push),您就完成了衝突的解決。  32. 回到網站,您將看到綠色的勾號,這意味著您可以進行合併。  ## 步驟 7:其他好用功能 33. 如果您發現您的程式碼不如預期,您可以針對特定檔案進行恢復到上個同步時的狀態。這可以幫助您快速還原特定變更。   34. "反" Commit 功能允許您在不小心推送錯誤程式碼時,創建新的 Commit 來覆蓋它。請注意,這不會真正刪除歷史推送和撤銷紀錄。如果您需要完全擦除 Commit,可以參考這個 [擦除 Commit 的方法](https://docs.gitlab.com/ee/topics/git/git_rebase.html)。這是避免不小心洩漏敏感信息(例如 API 密鑰)的有用方式。  35[](https://). 您可以使用忽視功能來排除某些檔案,這些檔案您不希望被 Git 追蹤。通過創建一個 `.gitignore` 檔案,您可以告訴 Git 哪些檔案應該被忽視,從而不會在提交中包含它們。這對於排除編譯生成的檔案、日誌檔案和其他不需要追蹤的檔案非常有用。   # 第四部分:架設免費網頁? GitHub 不僅僅是一個程式版本控制平台,還可以用來托管靜態網頁。這意味著您可以使用 GitHub 免費托管您的網站,並使其可在全球范圍內訪問。以下是一個簡要的介紹: ## 步驟 1:創建專案 1. 在 GitHub 上,創建一個新的儲存庫(Repository),並將其命名為您的網站名稱。 2. 在儲存庫初始化選項中,選擇「Initialize this repository with a README」。這將創建一個 README.md 檔案。 3. 儲存庫創建完畢後,您可以將您的網站文件(HTML、CSS、JavaScript 等)上傳到儲存庫中。您可以使用 Git 命令或 GitHub Desktop 來完成此操作。 ## 步驟 2:啟用 GitHub Pages 4. 在儲存庫的頂部,點擊「Settings」(設置)選項卡。  5. 滾動到下面的「GitHub Pages」部分。在「Source」(源程式)下拉菜單中,選擇 Github Action (你也可以用 Branch)。   6. 這我們用靜態 HTML 模板,你也可以用別的,比方 npm 編譯 Vue 之類 (話說有人想學網站框架嗎?)  7. 發布,一樣按 `Commit`  8. 回到儲存庫的地方,你會注意到多了個 `Deployments`  9. 點進 `github-pages` 後到 `All environments` 你會產生一個網頁連結,點進去就是你個人頁面啦  ## 步驟 3:訪問您的網站 10. 現在,您的網站已經在 GitHub Pages 上托管。您可以在網頁瀏覽器中訪問它,並分享給他人。 範例: 我研究 ChatGPT Prompt 所產生的 [Pages](https://whats2000.github.io/ChatGPT-Generate-Game/) # 內容的總結: ## 第一部分:什麼是版本控制? 在這部分,介紹了版本控制的概念和其在軟體開發中的重要性。強調了版本控制的優勢,包括版本歷史記錄、協同工作和錯誤追蹤。 ## 第二部分:註冊 GitHub 帳號 這一部分教您如何註冊 GitHub 帳號,步驟包括訪問 GitHub 官方網站、填寫註冊信息、驗證帳號、選擇初始設置以及註冊完成。 ## 第三部分:使用 GitHub Desktop 在這部分,介紹了如何使用 GitHub Desktop 來管理 GitHub 儲存庫。涵蓋了初始化新的儲存庫、創建提交、推送提交到 GitHub、管理分支、解決衝突和合併等關鍵步驟。還提供了有用的功能,如恢復到上個同步狀態、反 Commit 和使用 .gitignore 文件來忽略特定檔案。 ## 第四部分:架設免費網頁 最後,分享了如何使用 GitHub Pages 托管靜態網頁。提供了步驟,包括創建儲存庫、上傳網站文件、啟用 GitHub Pages 和訪問您的網站。 ## 補充 [學生福利](https://education.github.com/pack)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.