[iOS] Xcode 8 – files missing from working copy 的原因和解決辦法

我是出現多國語言的檔案不見:

warning: Missing file: Localizable.strings is missing from working copy


目前的專案是使用 Xcode 8.3.1 和使用 Git 作為版本控管。
發生情境是,我沒有搬移檔案,只有透過Xcode UI 去增加語言別,在 Build 的時候會出現找不到的檔案的警告:

xxx files missing from working copy

 

但是這時候去專案裡面的 Target/Build Phases/Compile Sources 區塊裡面看,
路徑也的確是更改過的;

事實上也都是沒有問題的,所以也可以 build 起來。

 


網路上謠傳是

搭配版本控制的錯亂

用錯誤訊息喂了一下 Google ,看了幾篇後發現這可能是 Xcode 8 的問題(據說在 GM 版的時候就已經有人跑出來問了)

因為在有版本控制下移動檔案,對版本控制來說原本的檔案就已經不在了。可能就變成是 Xcode 的 Source Control 工具沒有辦法找到原本的檔案,接著就會跳出像是那樣子的警告。

解決辦法

我想挑戰不透過指令在 Xcode 裡設定看看能不能解決:

結論:試不出來,可以用 Commit… ,但還是沒試出來,改用下指令的好了,先用 git status 可以看到:

On branch master
Changes to be committed:
 (use "git reset HEAD <file>..." to unstage)

 new file: SettingsTagController.m
 new file: SettingsViewController.m
 new file: ar.lproj/Localizable.strings
 new file: es.lproj/Localizable.strings
 new file: fi.lproj/Localizable.strings
 new file: ja.lproj/Localizable.strings

Changes not staged for commit:
 (use "git add <file>..." to update what will be committed)
 (use "git checkout -- <file>..." to discard changes in working directory)

 modified: SettingsTagController.m
 modified: SettingsViewController.m
 modified: ar.lproj/Localizable.strings
 modified: es.lproj/Localizable.strings
 modified: fi.lproj/Localizable.strings
 modified: ja.lproj/Localizable.strings

直接下這2個指令就解決了

git add .
git commit -m "fixed"

這時候把需要移動的檔案加入 stage 中,版本控制透過差異比對就會知道你這個檔案其實已經換到其他位置去了。

這時候回到 Xcode 中再重新 build 一次,這個找不到檔案的警告就會消失了。

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *