How to place an existing Xcode project under Version Control with Git (and ignore files you don't want to track)

Usually when you create a new Xcode Project you can choose to setup a new Git repository. This is the best and easiest way to track your changes. However if you have a project that is not under version control you can create a Git repository retrospectively.

This is fairly straightforward using the Terminal app on your Mac (under Applications / Utilities):

cd into the directory where your project resides

then initialize an empty repository (git init)

and add the entire directory to it (git add .)

commit your changes (git commit -m “initial commit)

So far so good. However Mac has a hidden directory called .DS_Store in every directory – we may not want to track that. Plus, every time you make a minor UI change in Xcode (such as open a group in the file explorer or something that is not relevant to your actual code) Xcode tracks this change in a file called UserInterfaceState.xcuserstate, and we definitely do NOT want to track that.

To tell Git that we don’t want those two things, we’ll amend our previous instructions a bit:

cd into the directory where you project resides

create a file called .gitignore

add each file or directory on a new line

then create, add and commit your files to Git

Let’s assume my project is called MyProject, then the steps are as follows:

One thought on “How to place an existing Xcode project under Version Control with Git (and ignore files you don't want to track)”

Before proceeding it’s a really good idea to create a .gitignore file so that certain system files are not placed under version control. Those are files that keep track of the Xcode User Interface and are prone to change every 0.000001 seconds – making commits impossible. This is a known issue with Xcode.