專案加入 Git,Xcode、Sourcetree、GitHub、Gitea 都是如何驗證的?
目錄
1. Xcode 中加入 GitHub
1-1 GitHub
1-2 回到 Xcode
1-3 cd ~/.ssh
2. Xcode 版本管控
2-1 Gitea
3. Sourcetree
⦿ Xcode 中加入 GitHub
⦿ GitHub
⦿ 回到 Xcode
⦿ cd ~/.ssh
⦿ Xcode 版本管控
⦿ Gitea
⦿ Sourcetree
Xcode 中加入 GitHub
GitHub
在 Xcode 中,預設就得以加入 GitHub 的帳號,我們點 Xcode => Settings => 切換至 Accounts 頁籤 => 左下角的 +
號,可以看到如下:
從選單中找到 GitHub
按下 Continue,這時就可以輸入你的 GitHub 帳號,但在 Token 的地方必須先從網頁登入 GitHub 帳號,如下:
從帳號的大頭貼選取 Settings,再從頁籤當中找到最下方的 Developer settings,再找到 Personal access tokens,如下:
我們可以使用 Tokens(classic)即可,但須按上方的 Generate new token,再選取一次 Generate new token(classic),設定 token 的過期時間,如下:
接著,再把幾個需有的權限打勾。
如果你不確定會用到哪些權限的話,除了 Copilot,其他選項可以都打勾起來,因為若你不會用到那些功能,可能危險性也不高(?)。最後點擊 Generate token,如下:
建立 token 後,我們將之複製
起來,就完成前半場了。
回到 Xcode
我們再次從 Xcode
上方找到 Setting
=> Accounts 頁籤
=> 左下角的 + 號
,選擇 GitHub 會出現如下:
輸入你的帳號,接著貼上剛才複製的 token,Xcode 就可以用這個 token Sign In GitHub 並與之連動,如果成功加入就會看到 GitHub 的內容有 Account 是什麼,利用什麼協定做 Clone,以及 SSH Key 是用什麼加密演算法,有 ecdsa、rsa、ecdsa 等,而 GitHub
只支援 ECDSA
,所以沒得選了。
如果是用 HTTPS 協定
的話,那麼使用 GitHub 產生的 token 即可,如果要用 SSH 協定
,則需要 SSH Key
,需要的再往下看,否則直接跳到 Xcode 版本管控
。
cd ~/.ssh
在 MAC 裡,會有許多我們產生的 private key、SSH Key(兩個互為一組,是謂密鑰對)等,通常是放在 .ssh
資料夾內,我們可以打開 Terminal 鍵入 cd ~/.ssh
,這表示由當前位置去切換到放在帳號名稱下的 .ssh
資料夾。
接著,ls -al 列出裡面的檔案及其使用權限,如下:
前面的 .
與 ..
是資料夾不需要管它,而 config 檔如果 cat 會得到如下:
這是使用 Sourcetree 的相關設定檔,不是我們要找到的 private key 與 SSH Key。
接著,我們可以看到有兩個名稱相同
的檔案(副檔名不同)有不同權限(UGO),-rw-r--r--
跟 -rw
這表示後者
只有特定使用者才能讀取,沒錯,擁有後者
這樣權限的檔案就是 private key,而另個權限則是 SSH Key,也就是 Public Key 了。
在 Xcode 中,若使用 SSH 協定連結 GitHub,我們必須要使用 SSH 套件
產生 SSH Key,而關於 private key、public key、session key 等,可以參考下面 openssl
的兩篇文章:
打開 Terminal,鍵入 ssh-keygen -t ecdsa -b 521 -C email@email.com
,ssh-keygen 意思是使用 SSH 套件產生 Key,- t ecdsa 則是以 -t 指定了 ECDSA(Elliptic Curve Digital Signature Algorithm,橢圓曲線數位簽名演算法),使用 ECDSA 可以比 RSA、DSA 有更高的安全性,以及更短的密鑰。
-b 521,則是以 -b 指定了 512 位的 ECDSA 的安全級別,最後 -C 則是附上 comment,放入 email。
但如果在之前已經使用過這行指令產生 SSH 的 ECDSA Key 的話,在 .ssh 資料夾中就已經會有 id_ecdsa 與 id_ecdsa.pub,如果你想要另外創建一組新的 SSH Key 就鍵入 ssh-keygen -t ecdsa -b 521 -C email@email.com -f ~/.ssh/id_ecdsa_new
這表示將新產生的密鑰對指定為 .ssh 資料夾中的 id_ecdsa_new 這個檔案,就不會影響之前產生的密鑰對。
好了,接下來就可以在 Xcode 中使用 SSH Key 來連結 GitHub 了,但在 Xcode 中,你還必須將這個產生的 SSH Key 傳到 GitHub,如下:
Xcode 版本管控
現在,我們可以使用 Xcode 來做版本管控,當你新建專案時,如果沒能成功建立 Git repository on Mac
,如下:
我們後續仍可以這樣建立,首先,從 Xcode 最上放的 Integrate => New Git Repository。
這表示說你新建專案的資料夾
裡面的檔案就是你要做版本控制的檔案,資料夾就是所謂的 Local Repo,此時每次新增檔案,修改程式碼 commit 後,Xcode 都會幫你記錄下來。
同樣地,拳不能只打半套,這個 Local Repo
只能在本地做管控,我們還需有一個 Remote
,如下操作:
在 Xcode 左邊的小頁籤,選到 Show the Source Control navigator => 右鍵 New “專案名稱” Remote
或 Add Existing Remote
。
在選擇之前,我們先到 GitHub 看看是否有 Remote。
的確沒有 CameraHuman
這個 Remote,現在選擇新建 Remote。
因為前面已經設定了 GitHub 帳號,所以這邊 Account 會自動帶入,在 Remote 名稱下方,我們也可以看到遠端的 Repo 的網址是 GitHub
、帳號
、名稱
,Description 可以不用填,再設定是公開庫
或私有庫
,以及 Remote Name(通常使用 origin 即可)。
成功創建後,我們就可以在 GitHub 上搜尋到這個 Remote 的名稱,如上圖右。
Gitea
回到上一步,如果你使用的不是 GitHub
的公開庫而是公司的私有庫,例如 Gitea
,那麼,我們就要使用 Add Existing Remote,接著加入公司私有庫的網址,例如 http://192.168.23.321:1000/組織名稱/專案名稱
,在這樣的情況下,如果是使用 Terminal 去 clone 庫的內容,我們會這樣操作:
chunlicheng@MacBook-Air-M1 myRepo % git clone http://localhost:1000/組織名稱/專案名稱.git
即是前面改為 localhost
,後方加上 .git
。
繼續閱讀|回目錄
Sourcetree
在 Sourcetree 的初始介面中,若你有設定 GitHub 帳號,我們就可以從 GitHub 上面將專案 Clone 回 Local,如下:
不過,我們重點先放在與庫的連結,點到 Sourcetree 的 Settings => Accounts,當我們按下 Add 會出現如下:
同樣地,我們可以選擇用 HTTPS 還是 SSH 協定,當然 SSH 一樣要使用 SSH Key,當你按下 Connect Account 時,頁面會自動跳轉,比方會用 Safari 開啟驗證頁面,只要登入 GitHub 帳號即可,最後如下:
當你按下 Save 時有可能會跳出警示。
這在告訴你說,你已經加入類似的帳號,由於之前是使用帳號密碼登入 GitHub 來讓 Sourcetree 與之連結,所以早先已經連結了 Sourcetree 與 GitHub,現在為了安全起見必須要使用 OAuth、token、SSH Key,不能只以帳號登入。
而 Sourcetree 在 Local 的地方,可以直接把資料夾拖進去。
接著就可以在主介面看到 Remote 有 main 跟 addNewOne,或是 History 裡做了哪些事。
addNewOne 是從 main 中開出去的分支,在初次將本地庫與遠程庫連接再一起時,push 後會出現 Initial Commit,當你新開發的功能寫好後,我們通常會將之 Merge 回 main,這時在 Sourcetree 中也可以看到 main 3 ahead Merge branch ‘addNewOne’。
與 Xcode 同樣是 GUI,Sourcetree 也能夠加入遠程庫,我們加入 Local 後,在右上角 Settings,找到 Remote,把你的遠程庫加進來。