Lab 4–5 教師與助教手冊
課前準備(教師與助教)
課堂流程
| 單元 | 進行方式 | 檢核 |
|---|---|---|
| 終端機 | 全班一起開啟終端機,說明終端機的用途,接著貼上安裝指令,讓 Git、GitHub CLI 與 VS Code 在後續單元進行時安裝。 | 每位學生都已開始安裝。 |
| 檔案與資料夾 | 投影學生版的 week04-lab 結構圖,說明縮排代表的包含關係。提問:進入 data 後,終端機會顯示哪個位置?再回到上一層呢? | 全班皆已開啟終端機並解壓縮 week04-lab。 |
| 在資料夾之間移動 | 學生在「練習:逐步移動」中逐步預測並執行,再於自己的終端機操作一次。教師巡堂,不示範完整流程。提早完成者進行「練習:自行移動」。 | 隨機請學生說明分別從 data 與 practice 執行 cd .. 後的位置。 |
| Lab 5 · 10/7:先確認每位學生都能開啟終端機,且 Git、GitHub CLI 與 VS Code 已安裝完成。 | ||
| Git 與 GitHub 儲存庫 | 說明 Git 與 GitHub 的用途,確認三項工具都已安裝,再註冊並驗證 GitHub 帳號。接著建立儲存庫,執行 gh auth login 與 git config。 | git --version、gh --version、code --version 都顯示版本號,且 gh auth status 顯示已登入。未完成者由助教協助,其餘學生繼續進行。 |
| 提交與上傳修改 | clone 之後,投影「Git 的四個區域」完整示範一輪。接著新增 about-me.txt,逐行執行指令。每一步後提問:「修改目前位於哪一個區域?」第二次修改時不參照指令。接著進行衝突練習,最後以 Learn Git Branching 說明 commit 圖。 | GitHub 上可看到 about-me.txt,且至少有兩筆相關 commit。 |
| 正規式 | 每一題先由學生自行撰寫,再公布答案。multiline 一題請學生反覆開關該設定,比較結果。群組一節先示範 Replace 的位置;疊字三題完成後,請學生說明各疊字的詞類,以此引出正規式的限制。最後使用詞元切分工具,與 Lecture 03 的內容銜接。 | 每位學生都能比對 S001、S002 而不比對 X003。 |
| 綜合練習 | 學生獨立完成。助教以學生版「參考答案」的最後一項核對。 | 儲存庫中有四個檔案,answers.txt 內容正確。 |
進度落後時,依序省略 Regexper、Learn Git Branching、衝突練習與詞元切分工具(改為課後練習)。「Git 的四個區域」與綜合練習不宜省略。
常見問題與處理
依課程進行的順序排列。第三欄中的指令可直接告知學生輸入。
| 現象 | 平台 | 原因與處理 |
|---|---|---|
winget : The term 'winget' is not recognized | Windows | 舊版 Windows 或學校電腦未安裝 App Installer。改用隨身碟或官網的安裝檔。 |
git : The term 'git' is not recognized | Windows | 安裝後尚未重新開啟 PowerShell。關閉整個視窗後重新開啟;若仍無效,重新執行安裝檔。 |
xcode-select 視窗顯示的等待時間很長 | Mac | 正在下載 Command Line Tools,網路較慢時會花費較久。等待期間可繼續進行資料夾的練習,該部分不需要 Git。 |
zsh: command not found: gh | Mac | 尚未安裝 .pkg,或安裝後未開啟新的 Terminal 視窗。 |
解壓縮後 ls 只顯示一個 week04-lab | 兩者 | 多解壓縮了一層,再執行一次 cd week04-lab 即可。若下載兩次,資料夾名稱會是 week04-lab (1),路徑須隨之修改;最簡便的方式是將資料夾拖曳到終端機。 |
cat 顯示的中文為亂碼 | Windows | Windows PowerShell 5.1 預設不以 UTF-8 讀取檔案。練習檔皆為英文,不受影響;學生自建的中文檔案可改用 cat -Encoding UTF8 檔名。 |
| 電子郵件未驗證,無法建立儲存庫 | 兩者 | 請學生收信(包含垃圾郵件匣)。等待期間先進行本機操作,push 留到最後。 |
gh auth login 的一次性驗證碼過期 | 兩者 | 重新執行 gh auth login。 |
第三個問題誤選 n;或 git push 要求輸入 Username、Password | 兩者 | 按 Ctrl + C 取消,執行 gh auth setup-git 後再 push。 |
| 出現 Git Credential Manager 的登入視窗 | Windows | 此為 Git for Windows 內建的另一種登入方式,依畫面指示在瀏覽器登入即可,結果相同。 |
fatal: Need to specify how to reconcile divergent branches. | 兩者 | 只執行了 git pull。改用 git pull --no-rebase。 |
| 衝突標記未刪除就 commit | 兩者 | 檔案中仍有 <<<<<<< 等標記。以編輯器刪除標記後,再 add、commit 一次。 |
zsh: command not found: code | Mac | 尚未執行 VS Code 的 Shell Command。在 VS Code 按 ⇧⌘P,執行「Shell Command: Install 'code' command in PATH」,再開啟新的 Terminal 視窗。 |
code : The term 'code' is not recognized | Windows | 安裝 VS Code 後尚未重新開啟 PowerShell。暫時可改用 notepad 檔名。 |
Author identity unknown | 兩者 | 尚未執行 git config --global user.name 與 user.email。 |
fatal: destination path 'command-line-lab' already exists | 兩者 | 已經 clone 過,直接執行 cd command-line-lab。 |
fatal: not a git repository | 兩者 | 目前不在儲存庫資料夾中。以 pwd 確認位置後,cd 到 command-line-lab。 |
pathspec 'about-me.txt' did not match any files | 兩者 | Windows 常見檔名為 about-me.txt.txt(檔案總管隱藏了副檔名);Mac 常見存成 .rtf(文字編輯未切換為純文字)。以 ls 查看實際檔名,並以 mv 更正。 |
| 出現陌生的編輯畫面 | 兩者 | git commit 未加 -m,因此開啟了 Vim。依序按 Esc、輸入 :q!、按 Enter,再重新執行。 |
warning: ... LF will be replaced by CRLF | Windows | 換行格式的提示,並非錯誤。 |
! [rejected] ... (fetch first) | 兩者 | GitHub 上有本機沒有的 commit(例如學生在網頁上修改過檔案)。先執行 git pull --no-rebase,再執行 git push。 |
Permission to ... denied | 兩者 | clone 了其他同學的儲存庫。回到自己的儲存庫重新複製網址。 |
成果檢核
儲存庫皆為公開,可直接開啟 github.com/學生帳號/command-line-lab 檢查:
- 包含
README.md、about-me.txt、participants.txt、answers.txt四個檔案。 answers.txt為^S\d{3}(或S\d{3}),並註明須啟用 multiline。未使用^者,可追問行中出現XS004時的結果。- commit 紀錄至少四筆:Initial commit、兩次 about-me 修改,以及綜合練習。
- 口頭抽問一題:對照「Git 的四個區域」,說明已 commit 但尚未 push 時修改所在的區域。
檔案說明
lab/week04/week04-lab/:練習資料夾的原始檔。修改後執行python3 lab/week04/make_lab_zip.py重新打包。- zip 內刻意不含外層資料夾。Windows 的「全部解壓縮」與 Mac 的封存工具程式都會以 zip 的檔名自動建立
week04-lab資料夾,解壓縮後恰為一層。因此 zip 不可改名,否則資料夾名稱會與學生版的指令不符。 - 練習檔全部使用英文,以避免 Windows PowerShell 5.1 讀取 UTF-8 中文時出現亂碼。