Windows 上的 SwiftUI 作業已經改好,到了遠端 Mac 卻找不到最新版本?
適合:先在 Windows 編寫,再交給遠端 Mac 用 Xcode 開啟課程專案的學生;最快做法是提交並推送到 GitHub 倉庫,再到 Mac 拉取最新改動,完成後提交回傳。GitHub Desktop 不是自動同步資料夾。
這篇適合只有 Windows、剛開始學 SwiftUI,並想在可執行 Xcode 的 Mac 環境接續作業的人。
如果您已有課程倉庫,或要在學校電腦與遠端 Mac 間保留清楚的修改記錄,也可以按以下流程操作。
00先準備可供兩台電腦存取的課程倉庫
把 Git 倉庫想成一本有版本記錄的作業本:每次提交都記下特定時間點的改動,而推送和拉取才負責把記錄送到遠端倉庫或取回本機。這和把資料夾放在自動同步磁碟裡不同,沒有推送的提交不會自動出現在另一台電腦。
GitHub Desktop 可在 Windows 和 macOS 使用,並提供克隆、提交及推送等常見倉庫操作;開始前,先確認登入帳號及課程倉庫權限符合需要。GitHub Desktop 的平台與功能說明可核對支援的平台,而私人倉庫的存取權限則要按個人倉庫的協作者權限規則確認。
| 作業環節 | Windows 上的 GitHub Desktop | 遠端 Mac 上的 GitHub Desktop/Xcode |
|---|---|---|
| 取得專案 | 克隆課程倉庫,或開啟已克隆的本機資料夾 | 克隆同一倉庫,或同步已有的本機副本 |
| 交接改動 | 檢查變更、提交,再推送到遠端倉庫 | 同步遠端分支,確認取回的內容 |
| 開始作業 | 編輯課程允許在 Windows 修改的檔案 | 從專案檔開啟工程,再按課程要求操作 |
如果倉庫由教師或學校管理,請先問清楚誰能推送、是否需要先建立自己的副本,以及應該使用哪個分支。倉庫看得到不代表一定有權限推送;權限不足時,應在開始寫作業前處理,而不是交件前才發現改動送不出去。
01在 Windows 完成修改,再推送作業記錄
GitHub Desktop 會顯示本機倉庫中新增、修改或刪除的檔案。推送不是提交的別名:提交先記錄在本機版本歷史,推送才把已提交的內容送到遠端。GitHub 官方的從 GitHub Desktop 推送改動說明列出推送流程;完成後也可用分支同步說明核對本機和遠端狀態。
- 在 GitHub Desktop 開啟課程倉庫;如果這部電腦尚未有副本,先克隆教師提供的倉庫或已獲授權的課程倉庫。
- 使用編輯器修改作業,並確認檔案儲存在該倉庫資料夾內。只開啟了相似名稱的另一個資料夾,修改就不會出現在目前倉庫的變更清單。
- 回到 GitHub Desktop 檢查變更清單,逐一確認檔案名稱和差異。若出現不認識的私人設定檔或大量生成檔案,先停止提交並查明原因。
- 在摘要欄寫清楚這次修改,例如「完成課堂練習的畫面排版」,再建立提交。摘要應讓日後能辨認作業改了什麼,不要用空白或難以理解的文字。
- 按推送,把提交傳至遠端倉庫;接著確認介面沒有待推送的本機提交,並確認遠端倉庫中看得到該次提交。
提醒:如果按了提交卻沒有按推送,遠端 Mac 通常仍取不到這次更新。離開學校電腦前,請確認推送已完成;若沒有網路或遇到權限錯誤,先保留本機倉庫並記下錯誤,不要把作業尚未送出的狀態當成已交接。
02在遠端 Mac 拉取專案,交給 Xcode 開啟
遠端 Mac 上要取得的是同一個遠端倉庫中的最新版本,不是 Windows 電腦上的即時畫面。可在 Mac 的 GitHub Desktop 克隆課程倉庫,或開啟已存在的倉庫並同步最新分支;接著從 Finder 或 Xcode 開啟課程指定的工程檔。若需要確認 Xcode 與 Git 倉庫的關係,可參考 Apple 的Xcode 專案設定來源控制說明及來源控制功能介紹。
| Mac 上的狀態 | 建議處理 | 開始修改前的驗收 |
|---|---|---|
| 尚未有專案副本 | 克隆正確的課程倉庫 | 專案資料夾和課程提供的倉庫一致 |
| 已有倉庫副本 | 先同步遠端分支 | 確認最新提交及修改檔案已出現 |
| 專案資料夾已開啟 | 從課程工程檔開啟 Xcode | 確認工程能開啟,並定位課程要求的程式檔 |
本流程的驗收重點不是「檔案看起來都有」,而是 Xcode 能開啟課程工程,並且能找到要繼續修改的課程檔案。若無法開啟,先核對是否克隆正確倉庫、是否拉取到正確分支,以及課程是否要求額外資源或設定;不要先重建一份新工程,否則容易讓作業與教師提供的版本分叉。
要注意,Windows 可用來管理倉庫和編輯適合跨平台工作的檔案,但這不會讓 Windows 直接執行 Xcode。需要在 Xcode 中開啟或驗收 iOS 課程專案時,應把專案交接到可用的 Mac 環境。
03Mac 修改完成後,先回傳再回 Windows 接續
在遠端 Mac 上完成修改後,先儲存檔案,回到 GitHub Desktop 或 Xcode 檢查差異,再建立提交並推送。Apple 的來源控制合併改動說明也說明,倉庫中的改動需要整合;若兩端改了同一部分,可能需要處理衝突,不能假設新版本會自動覆蓋舊版本而且保留所有內容。
| 回到 Windows 時看到的情況 | 安全處理方式 | 避免的做法 |
|---|---|---|
| Mac 已推送,Windows 沒有尚未提交的本機修改 | 先同步遠端分支,再檢查更新 | 先改檔,再直接覆蓋遠端內容 |
| Windows 有未提交修改,Mac 也有新提交 | 先保留本機修改,再同步並檢查差異 | 不看變更就強行重設或覆蓋 |
| 同一檔案同一段程式出現衝突 | 比較兩邊版本,依課程要求整合,再測試 | 隨手刪掉一側內容,或假設衝突提示代表檔案損壞 |
建議把接續順序固定下來:一台電腦完成並推送,另一台電腦先同步再編輯。若不得不在兩台電腦同時修改,回到其中一台時先檢查遠端更新與本機差異;遇到衝突,依照程式碼區塊逐段判斷要保留的內容,再提交整合結果。不要在未確認遠端改動前使用會丟棄本機或遠端修改的操作。
04推送前檢查工程檔、生成檔與帳號憑證
倉庫裡的檔案不一定都要提交。課程原始碼、資源檔和工程設定是否需要追蹤,應以教師要求及專案依賴為準;編譯產生的暫存資料通常不必因為出現在資料夾裡就一併交上去。GitHub 說明了如何忽略不需要追蹤的檔案,並提供可作參考的Swift 忽略規則範本,但範本不是課程規定,使用前仍須核對專案實際內容。
| 檔案類型 | 推送前的判斷 | 容易出現的問題 |
|---|---|---|
| 課程原始碼、圖片或其他資源 | 核對課程要求,以及專案是否依賴該檔案 | 漏掉資源,遠端 Mac 開啟後出現缺檔 |
| 工程與專案設定檔 | 確認它是否是課程工程的一部分,及是否含個人設定 | 不提交必要設定,或意外公開私人資訊 |
| 編譯產生檔、快取或暫存檔 | 對照忽略規則和課程要求再決定 | 提交大量無助於交件的檔案,掩蓋真正改動 |
| 密碼、存取令牌、私鑰 | 不放進倉庫、不放進提交 | 即使後來刪除,憑證仍可能留在版本記錄中 |
可在推送前使用以下清單逐項檢查;只要有一項不確定,就先查課程說明或詢問教師,不要為了讓變更清單變空而全部提交。
- [ ] GitHub Desktop 開啟的是正確課程倉庫,而不是同名的其他資料夾。
- [ ] 變更清單中的每個檔案都能說明用途,沒有未辨認的新增或刪除。
- [ ] 課程原始碼、工程檔和資源檔符合教師的提交要求。
- [ ] 忽略規則沒有排除課程工程實際需要的檔案。
- [ ] 提交內容不含密碼、存取令牌、私鑰或其他帳號憑證。
- [ ] 提交後已推送,另一台電腦能看到相同的遠端更新。
若憑證曾被推送到倉庫,單純從目前檔案刪除並不足以保證安全;應依照GitHub 移除倉庫敏感資料的指引處理,並視情況撤銷或更換該憑證。
05用 GitHub Desktop 接續作業,先確認每次交接完成
GitHub Desktop Windows 與遠端 Mac 的作業接續,依靠的是「提交、推送、拉取、檢查」這些明確動作,而不是自動同步。只要您能在 Windows 修改課程程式、在 Mac 拉到最新版本並由 Xcode 開啟工程,再把 Mac 上的修改推送回倉庫,就能留下可辨認的作業記錄。
如果課程要求使用 macOS 或 Xcode,而手邊沒有可用 Mac,可以先參考 NUKCLOUD 的遠端 Mac 使用說明,確認連線及操作方式,再判斷是否適合目前的課程。與在 Windows 上嘗試替代安裝相比,遠端 Mac 能提供實際的 macOS 與 Xcode 操作環境;但若課程不需要 Mac、只做跨平台程式練習,本機 Windows 通常更直接。若只是短期需要驗收 iOS 課程專案,也可查看 NUKCLOUD 的遠端 Mac 方案了解按需租用;長期固定使用或需要直接連接實體設備時,則應先比較自備 Mac 是否更符合需求。