How does Xcode work with Git for changing branch and checkout older commit?
Since Xcode at version 4.4.1 doesn't have a switch branch or checkout older version function, is it possible to do that in bash
git checkout in-app-purchase-to-be-added
git checkout HEAD^2
because all the source code (.m, .h), .xib, and project files, image resources will all change in a blink of an eye, so won't it cause weird behavior in Xcode? Right now I always quit Xcode, switch branch, and restart Xcode, but maybe there is a faster way.
XCode should have a way to switch branch, as described in "Using branches and git with Xcode 4.1"
First off, bring up the organizer’s repositories view and find your project on the left hand side. Click on the yellowish folder labeled Branches inside of it and then at the bottom of the window click on the Add Branch graphic. Give the branch a name in the dialog that appears, and be sure to select the checkbox at the bottom to Automatically switch to this branch.
go back into the organizer’s repository view and click on your blue folder again. At the bottom of the window you can select Switch Branch to go back to your master branch (or whichever you want to merge these changes into).
See also "Git Branch Management With Xcode"
For more complex branch switching/creation, yes, you might have to to it through the command-line:
One thing you need to be aware of if you are performing git version control from the command line with the project open in Xcode is that it does not always immediately spot when you have changed something. I find with the Organizer that you need to switch between some different views before it spots that the current branch has changed.
So closing/re-opening XCode might not always be needed, depending on the nature of your project.