如何將 iOS App 作業上傳到 GitHub
上傳作業前的準備
- 申請 GitHub 帳號。
- 從 Xcode 加入 GitHub 帳號。
- 設定 Git 的名字跟 email。
點選 Xcode > Settings。
切換到 Source Control 的 Git 分頁,輸入版本管理記錄想要顯示的名字跟 email。
上傳作業的步驟解說
- 將專案的 git 版本管理功能打開。
建立專案時,勾選 Create Git repository on my Mac。
如果一開始忘了勾,之後可參考以下連結為專案加上版本管理的功能。
- 將專案上傳到 GitHub。
切換到左邊 navigator 區塊 Source Control navigator 頁面的 Repositories 分頁。
滑鼠游標移到專案名字上,從右鍵選單點選 New xxx Remote。
點選右下角的 Create 按鈕將專案上傳到 GitHub。
成功後 Remote 的下方會出現 origin。
現在我們的專案已經成功上傳到 GitHub。滑鼠游標移到專案名字上,從右鍵選單點選 View on GitHub 即可打開專案的 GitHub 網頁。
接下來我們將學習如何在修改程式後做版本記錄和上傳修改後的版本。
- 修改程式後做版本記錄和上傳到 GitHub。
當程式寫到某個段落時,我們可以將目前的版本做記錄,方便未來查看之前寫的版本。記錄的方法如下。
- 執行 commit。
方法 1: 從 Quick Actions 選單(cmd + shift + a)點選 Commit。
方法 2: 點選 Xcode menu 的 Integrate > Commit。
2. 在 Commit message 的框框輸入文字,說明做了哪些修改。
輸入文字後,我們才能點選右邊的 commit 完成新版本的記錄。
3. 點選 commit,然後點選 Stage All and Commit 完成記錄。
4. 點選 push 將新版本上傳到 GitHub。
此時記錄只是存在我們的電腦上,所以 GitHub 上的程式還是之前上傳的版本。若想將新版本上傳到 GitHub,記得再點選下圖的 push,push 會將剛剛記錄的版本上傳到 GitHub。
再次點選 push 完成上傳。
ps: 若是想之後再進行 push 上傳的動作,可點選 menu 的 Integrate > Push。
剛剛 commit 後再 push 的動作也可以合併。如下圖所示,點選 Commit 旁的箭頭後,點選 Commit and Push 即可同時記錄版本和上傳到 GitHub。
查看 commit 清單
開發 App 的過程中,我們可以記錄多個不同時間點的版本,從 commit 清單查可過去記錄的版本。如下圖所示,yellow background 正是我們剛剛記錄的版本。
取得專案在 GitHub 上的網址
滑鼠游標移到專案名字上,從右鍵選單點選 View on GitHub,打開專案的 GitHub 網頁。
瀏覽器上的網址即為專案的網址,為了保險起見,最好檢查一下。下圖顯示的 yellow background 代表我們上次 commit 時填寫的 commit message。
倘若發現如下圖所示,全部顯示 Initial Commit,那表示 GitHub 上的專案是全新的專案,並未包含修改過的程式,因為 Initial Commit 指的是專案剛建立時產生的 commit。
將專案的 GitHub 網址貼在 Medium 發表的作業文章裡。
例如以下連結即是專案 Demo 的 GitHub 網址。
下載 App 專案
若是打開下載的專案遇到 Unsupported Swift Version 問題,可參考以下連結。
commit 和 push 的相關問題
剛剛執行 commit 和 push 時若遇到問題,可參考以下連結的解法。
- failed to commit files。
- Repository creation failed 或 An unknown error occurred。
- Your account does not have permission to access this resource。
- The remote repository rejected commits。
- Failed to load owners。
可能是設定 GitHub token 時忘了勾選 repo。
使用 amend 修改上次的 git commit
設定 GitHub 專案的預覽圖片
利用 git tag 記錄 App 版本
App 比較龐大的話,建議可以分多篇文章發表,使用 git tag 設定版本,文章裡再注明 tag 的版本。
同學多篇文章的範例: