標籤: Git

讓 Xcode 專案易於版本控制的方法 - 使用 git pre-commit hook

好幾年前我曾經寫過一篇讓 Xcode 專案易於版本控制的方法,它非常的好用,我也在多個專案裡頭使用這樣的配置用了好多年,都沒有出過什麼問題。

直到最近遇到了 SwiftUI 的 Preview 功能。

猜測可能是因為原先的設定是在 Build phase 去執行排序的 script,導致它破壞了 SwiftUI Preview 的一些機制,我想到了幾個解法,像是

  • 不要放在 Build phase,放到 Run phase 去執行。
  • 改用 XcodeGen 之類的工具產生 project file。
  • 使用 git hook 的 pre-commit 來執行排序。
  • 不要用,等真的遇到 merge conflict 了再說 lol

最後我選擇了 pre-commit 的做法。

繼續閱讀 ➜

如何建立不同的 SSH Key 對應到不同的 Github 帳號

情況

我有私人的 GitHub 帳號,為了方便自己跟公司管理起見,我用公司的信箱申請另一個 GitHub 帳號來存取公司的 repo。

問題

同一台電腦的一組 SSH Key 只能綁定到一個 GitHub 帳號,無法用同一組 SSH key 綁定到多組帳號,所以我無法把綁到私人帳號的 SSH Key 再綁到公司帳號。

解法

我要在同一台電腦建立不同的 SSH Key 對應到不同的 GitHub 帳號,並且在執行 git 操作時,系統會自動選擇對應的 SSH key。

繼續閱讀 ➜

為何 Git-Flow 可能不適合你

Git-FlowVincent Driessen 在 2010 年提出的一套 Git 分支模型,簡單的說,它有 masterdevelop 這兩個主要的分支,以及 feature / release / hotfix 這三個支援型分支,至於各個分支的用途看圖片應該就懂了,或是看原文有更詳細的說明。

由於當時大家對如何使用 Git 還處於摸索的階段,所以當這套規範被提出並且大家發現真的滿好用的之後,它很快就被廣泛的接受。

繼續閱讀 ➜

自動解決 Xcode project file 的合併衝突

這個方法的步驟如下:

  1. 建立一個 .gitattributes
  2. 輸入 *.pbxproj merge=union
  3. commit 這個 .gitattributes

這些動作告訴 Git 「針對 .pbxproj 檔要使用 union 的 merge 策略」,翻成白話就是「要包含對方的修改跟自己的修改」。

在之前的文章裡頭,我們已經將檔案照檔名排序了,所以當遇到合併衝突的時候,可以安心的包含對方的修改跟自己的修改。

參考來源

讓 Xcode 專案易於版本控制的方法

若是你有多人協同開發 Mac/iOS 專案,並且有使用版本控制系統的話,一定會在合併 Xcode 專案檔時吃到不少苦頭,一個不小心就會誤刪某些檔案的參照,或是重複某些檔案的參照。

最近發現一個好用的 script,可以用它來幫忙「根據檔名排序」專案檔裡頭的檔案。原本你的專案可能是混雜了檔案與群組資料夾,但經過這個 script 排序之後,專案會變成所有的群組資料夾排在最前面,接著才是檔案,而且群組資料夾裡頭的內容也會被排序。

因為被排序過,所以在合併不同版本的時候,就可以容易看出哪些項目是新增或刪除,若是不小心重複參照了某些檔案,也比較容易找出來。

繼續閱讀 ➜