# Git 課程入門篇 ## 課程緣起 說到 Git ,⼤家可能會覺得「蛤!Git 也需要上課︖」 其實 Git 是⼀個易學難精的⼯具,但作為關鍵時刻可以救你⼀命的⼯具,⼀開始不好好學,等到災難發⽣時,可就太晚囉,你說呢︖ 根據我們的不完整的調查,發現⼤部分的⼯程師都知道 Git,但在⼯作職場上,碰到複雜情境的時候,卻會往往不知所措、難以處理......,⼀個不⼩⼼,還可能會讓這個原本應該拯救你的東西,變成你升職或往前進的絆腳⽯。 - 不⼩⼼⽤錯⼀個指令,再多好幾天不眠不休的晚上,這是你想要的嗎︖ - 程式碼總是被同事的蓋掉,每天都在做⽩⼯︖ - 公司的版控與備份還在⽤隨身硬碟︖其實你有更好⽅式跟⼤家協作! - 網路上的芳鄰或 NAS 的共⽤資料夾,又不知道被誰改掉了︖ - 學會 Git ,再也不⽤害怕被⼼懷怒意的員⼯,報復性刪除公司檔案。 ## 課程目標 學習完本課程,將可以學到: ### 入門 - Git 簡介及環境安裝與設定。 - 基本操作 - 工作目錄、暫存區及儲存庫。 - 其它常見使用情境 ### 分支 - 為什麼要使用分支? - 分支的使用時機。 - 如何合併分支? - 合併分支時,發生衝突該如何解決? ### 共同協作 - 如何 Push 上傳到 GitHub? - Pull 與 Fetch 差異? - 從伺服器上取得 Repository - 與其它開發者的互動 - 使用 Pull Request(PR)。 - 使用 GitHub 免費製作個人網站。 - 其它常見使用情境 ### 適合對象 欲進入程式圈工作者,Git已逐漸成為必備技能 - 想成為工程師的潛在開發者 - 對Git版本控管有興趣的開發人員 - 需要進行程式碼版本控制的開發人員 - 想學習如何使用 Git、GitHub、GitLab - 在職場上常常需要解決協同合作問題的人員 - 程式設計師/系統分析人員/網頁設計師 --- # Git 課程進階篇 ## 課程目標 學習完本課程,將可以學到: ### 原理解析 - Git 內部運作原理 - git 目錄裡有什麼東西? - 長得很像亂碼 SHA-1 是怎麼算出來的? ### 關於分支 - 分支詳解 - 分支常見的誤解 - 切換分支時發生了什麼事? - 如何使用 Rebase 合併? - 如果只想要某個分支的某幾個 Commit? - 一定要有 GitHub 才能得到別人更新的檔案嗎? ### 修改歷史紀錄 - 如何把一個 Commit 拆成多個或組成一個? - 在 Commit 中間再安插新的 Commit - 刪除或調整 Commit 的先後順序。 ### 其它使用情境及進階主題 - 手邊的工作做到一半,臨時要切換到別的任務 - detached HEAD 是怎麼一回事? - 不小心使用 hard 模式 Reset 了某個 Commit,救得回來嗎? - 把帳號密碼放在 Git 裡了,想把它刪掉… - 還沒合併的分支被砍掉了,救得回來嗎? - Git 的資源回收機制介紹 - 怎麼樣把檔案真正的從 Git 裡移掉? - 可以只 Commit 一個檔案的部份的內容嗎? - Reset、Revert 跟 Rebase 指令有什麼差別? ### 使用 Git 與開發團隊協同開發 - Flow 簡介 - Git Flow 與 GitHub Flow