Lab 4–5 教師與助教手冊

Lab 4 · 9/30(三)Lab 5 · 10/7(三)學生版

課前準備(教師與助教)

課堂流程

單元進行方式檢核
終端機全班一起開啟終端機,說明終端機的用途,接著貼上安裝指令,讓 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 recognizedWindows舊版 Windows 或學校電腦未安裝 App Installer。改用隨身碟或官網的安裝檔。
git : The term 'git' is not recognizedWindows安裝後尚未重新開啟 PowerShell。關閉整個視窗後重新開啟;若仍無效,重新執行安裝檔。
xcode-select 視窗顯示的等待時間很長Mac正在下載 Command Line Tools,網路較慢時會花費較久。等待期間可繼續進行資料夾的練習,該部分不需要 Git。
zsh: command not found: ghMac尚未安裝 .pkg,或安裝後未開啟新的 Terminal 視窗。
解壓縮後 ls 只顯示一個 week04-lab兩者多解壓縮了一層,再執行一次 cd week04-lab 即可。若下載兩次,資料夾名稱會是 week04-lab (1),路徑須隨之修改;最簡便的方式是將資料夾拖曳到終端機。
cat 顯示的中文為亂碼WindowsWindows 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: codeMac尚未執行 VS Code 的 Shell Command。在 VS Code 按 ⇧⌘P,執行「Shell Command: Install 'code' command in PATH」,再開啟新的 Terminal 視窗。
code : The term 'code' is not recognizedWindows安裝 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 CRLFWindows換行格式的提示,並非錯誤。
! [rejected] ... (fetch first)兩者GitHub 上有本機沒有的 commit(例如學生在網頁上修改過檔案)。先執行 git pull --no-rebase,再執行 git push。
Permission to ... denied兩者clone 了其他同學的儲存庫。回到自己的儲存庫重新複製網址。

成果檢核

儲存庫皆為公開,可直接開啟 github.com/學生帳號/command-line-lab 檢查:

檔案說明