<style> .new { color: red; font-weight: bold; } </style> # Git & GitHub ###### tags: `presentation` `sprout` 資訊之芽 熊育霆 2022/05/08 --- [Sprout Python Git & GitHub 課前準備 - HackMD](https://hackmd.io/wYmCh9hBRpmn2v9jlfr5mQ) --- ## 好消息與壞消息 * 好消息 * 沒有 judge 上的作業,只有不計分的自主練習,所以今天很輕鬆 * 最後有迷因時間 * 壞消息 * 沒有 judge ,你需要自己額外找資源或是跟同學討論有哪些好資源可以使用 大家多利用 discord 跟同學和講師討論,學習效果會更好 --- ## 一些小提醒 * 今天會跟我們第一階段的第一堂課一樣,包含一堆名詞,但不用全部記起來。重要的東西我會多強調幾次 * 這堂課不會教 Python * 這堂課教的工具不會精進你的 Python 或其他程式設計技巧 ---- * 但是這堂課要教的工具非常非常非常好用,可以應用在各種情境... * 如果你發現你的朋友沒在用,那是因為他們的文化圈不知道有這個好用的東西。我們派遣你去當傳教士 ---- ``` 早上好資訊之芽 現在我有 Python 我很喜歡 Python 但是 Git 和 GitHub 比 Python ... 因為非常好版本控制 追蹤紀錄非常好 ``` --- ## 版本控制 ---- ### 什麼是版本控制 ---- 想像你在寫一份報告,這時你有報告初稿 ``` report-ver1.docx <- ``` 如果你沒有寫過報告你就想成玩遊戲的存檔(? ---- 老師看完你的初稿以後,你又做了一次修改,得到第二個版本 ``` report-ver2.docx <- ``` ---- 但你怕你改的太糟,所以你決定把第一版也留下來 ``` report-ver1.docx report-ver2.docx <- ``` ---- 下一次改版又多了一版 ``` report-ver1.docx report-ver2.docx report-ver3.docx <- ``` ---- 過了n次迭代以後,你電腦內的檔案可能會變成這樣子 ``` report-ver1.docx report-ver2.docx report-ver3.docx report-final.docx report-real-final.docx report-ultra-final.docx ... ``` ---- 你隨時可以回去看之前寫的東西 ``` report-ver1.docx report-ver2.docx report-ver3.docx report-final.docx <- report-real-final.docx report-ultra-final.docx ... ``` ---- 但是如果這個報告是分組報告,跟你一起做報告的組員也同時在修改這份檔案,可能會造成更大的混亂,這樣怎麼辦的? ---- 把所有紀錄都保存下來,可以隨時回去查找、把檔案恢復到以前的編輯狀態,這就是所謂「版本控制」 --- ## Git ---- ### 什麼是 Git 一個版本控制工具,他可以解決的問題有 * 恢復以前的編輯狀態 * 方便處理和其他人協作會產生的麻煩 --- ### GitHub ---- ### GitHub 簡介 透過Git進行版本控制的軟體原始碼代管服務平台(抄自[GitHub - 維基百科,自由的百科全書](https://zh.wikipedia.org/wiki/GitHub)) ---- 意思就是給你用 git 放我們寫的糞 code 上去的地方 ---- 當然你也可以放其他東西上去 * 圖片 * 影片 * 純文字檔 * 你的 word 檔案 * 你的 pdf 檔案 ---- 在 GitHub 網站上可以找到很多其他大神寫的東西 [microsoft/vscode: Visual Studio Code](https://github.com/microsoft/vscode) - Vscode [gorisanson/pikachu-volleyball: Pikachu Volleyball implemented into JavaScript by reverse engineering the original game](https://github.com/gorisanson/pikachu-volleyball) - 皮卡丘打排球 ---- 當然,有些人會放 code 以外的其他東西 [Anduin2017/HowToCook: 程序员在家做饭方法指南。Programmer's guide about how to cook at home (Chinese only).](https://github.com/Anduin2017/HowToCook) [vEnhance/napkin: An Infinitely Large Napkin](https://github.com/vEnhance/napkin) - 在數奧圈比較知名的一份數學大雜燴講義 ---- 所以...現在是 GitHub 導覽時間 ---- ### GitHub 簡介 (一分鐘內解釋給你爸媽他們可以聽懂的版本) * 程式設計師的雲端硬碟 ---- ``` 聖❤️誕🧡節💛老💚公💙不💜在🖤家 孤❤️獨🧡寂💛寞💚就💙來💜玩🖤我 👉只有你想不到的 👉沒有你玩不到的 👉午夜必備神器 👉激情互動♥️ 👉多人交互共享資源😍 👉java,python,c++應有盡有類型俱全 👉全棧工程,傳統bug,嗨到晚上睡不著♥️ 👉🌐https://github.com/ 👉快來體驗一下吧🔞 👉有頭髮人員🈲入 ---print("Hello world")-- ``` --- ## Git 操作與指令 ---- 首先我們先在 GitHub 上建立一個 repository 接下來請大家專心看我操作 ---- 哪裡不清楚的話請馬上發問 1. 建立 repository 2. 如果是 Window 系統,打開 Git Bash,MacOS 請打開終端機 3. 輸入指令 `git clone <your_repo_url>` 4. 你現在已經把你的 repo 下載下來了,用 Vscode 打開它 --- ## Git 指令 ---- git 有很多指令 以下列出我自己最常用的10個 ---- 1. `git clone` 2. `git status` 3. `git add` 4. `git commit` 5. `git push` 6. `git pull` 7. `git diff` 8. `git branch` 9. `git checkout` 10. `git merge` ---- 當然你自己查可以查到一大堆 ![](https://i.imgur.com/LZQQ0ie.png) ---- 還可以找到小抄 ![](https://res.cloudinary.com/practicaldev/image/fetch/s--Zib71Fgv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n082uxea33j6zq3mca7u.png) ---- ![](https://i.imgur.com/L083mtU.png) ---- 這些指令動手做,做中學就好 死背到底誰背得起來 ---- ### 示範 & 練習時間 我動手做一次比打一堆講義快多了 --- ## 更多參考資料 這些東西一個小時講不完,而且不自己動手做很難吸收 以下推薦一些自學的網站 ---- [連猴子都能懂的Git入門指南](https://backlog.com/git-tutorial/tw/) * 優點 * 中文 * 有很多圖片搭配說明 * 老嫗能解 * 缺點 * 教學可能有點久沒更新,可能有超過十年 * 我其實沒有真的把他看完 * 我個人不太認同他對指令做的入門、進階分法 * 沒有講得很細 ---- [W3Schools - Git Tutorial](https://www.w3schools.com/git/) * 優點 * 說明十分詳細清楚 * 目錄分類清楚 * 有十分多的練習題 * 缺點 * 英文 * 其實 w3school 這個網站還有很多其他程式語言、工具或框架的教學,我個人很推這個網站 ---- [Git - Book (zh-tw)](http://git-scm.com/book/zh-tw/v2) * 優點 * 中文 * 說明十分詳細清楚 * 內容豐富 * 目錄分類清楚 * 缺點 * 有部份內容還是英文的沒有翻譯出來 ---- [Git - Book](http://git-scm.com/book/en/v2) * 優點 * 上一頁那東西的原文版 * 更詳細清楚 * 內容更豐富 * 可以練習英文 * 缺點 * 英文 ---- [Learn Git Branching](https://learngitbranching.js.org/?locale=zh_TW) * 優點 * 視覺化的程度不可思議 * 幫助你學習 git branching 的概念(廢話) * 可以當作遊戲闖關來玩 * 缺點 * 暫時想不到 ---- [YouTube](https://youtu.be/dQw4w9WgXcQ) * 優點 * YouTube * 缺點 * YouTube --- ## Memes ---- ![](https://i.imgur.com/7KKt5HH.png) ---- ![](https://i.imgur.com/jkOW471.jpg) ---- <iframe id="reddit-embed" src="https://www.redditmedia.com/r/ProgrammerHumor/comments/l15v60/git_push_meme_force/?ref_source=embed&amp;ref=share&amp;embed=true" sandbox="allow-scripts allow-same-origin allow-popups" style="border: none;" height="527" width="640" scrolling="no"></iframe> ---- ![](https://i.imgur.com/drFa2Pa.png) ---- ![](https://i.imgur.com/c6DcMr6.png) ---- ![](https://i.imgur.com/0ZBwepw.png) ---- ![](https://i.imgur.com/kI9ISAs.png) --- Any Questions? ![](https://i.imgur.com/w2xd7oj.png) --- End
{"metaMigratedAt":"2023-06-16T23:58:26.775Z","metaMigratedFrom":"YAML","title":"Git & GitHub","breaks":true,"slideOptions":"{\"transition\":\"fade\"}","contributors":"[{\"id\":\"f93c8d2e-91fa-44cf-b9d2-ea6d875fcb79\",\"add\":6341,\"del\":1119}]"}
    579 views