Xcode + Git Local + remote Git

mardi 5 août 2014
Dans ce tutoriel, je vais vous expliquez comment développer un projet Xcode avec Git en local et aussi avec un Git distant pour les backups. Dans le cas d’un nouveau projet dans Xcode, c’est assez simple car une checkbox lors de la création du projet vous sera proposée pour lié votre projet à un serveur git local Dès que vous apporterez une modification à un fichier un petit M apprêtera à côté du fichier et indiquera qu’il est modifié par rapport à votre dépôt en local. Pour annuler vos changements par rapport au git local: XCODE-GIT ANNULER LES CHANGEMENTS Pour voir et « commiter » vos changements par rapport au git local: XCODE-GIT VUE DES CHANGEMENTS REMOTE : LOCAL Pour comparer votre code à l’historique des versions de votre git local: XCODE-GIT CHANGEMENTS PRECEDENTS Pour configurer git suiver les étapes suivantes:
// Configuration user
git config --global user.name "Michael Thiébault"
git config --global user.email "michael.thiebault@test.be"
// Ensuite on créé une clé public/privé ssh sur le serveur
ssh-keygen -t rsa -C "michael.thiebault@test.be"
Maintenant il suffit de prendre la clé publique se trouvant sur ~/.ssh/id_rsa.pub et de la mettre sur votre serveur Git remote et le tour est joué. Dans le cas ou vous avez déjà un projet existant lancer un terminal et positionnez vous dans la racine de votre projet Xcode:
// Création du dossier .git pour le dépôt local
git init
// Cherche tous les nouveaux fichiers et fichiers modifiés
git add --all
// Commit les nouveaux fichiers sur votre serveur git local avec le commentaires obligatoire
git commit -m "Initial commit"
Voilà, nous avons tout pour travailler avec notre projet Xcode et ces versionning en local Mais il peut être aussi intéressant de collaborer avec d’autres personnes. Cela consiste à gérer ces dépôts distants, en poussant (push) ou tirant (pull) des données depuis et vers ces dépôts quand vous souhaitez partager votre travail. Pour cela créé un dépôt (repository) sur votre serveur distant (remote) en vous connectant par ssh sur le serveur.
mkdir <name_repo>.git
cd <name_repo>.git
git --bare init
Une fois le repo créé sur le serveur distant, pour ne pas devoir toujours taper l’url du serveur distant, on va créer un alias pour notre serveur distant:
git remote add nom_projet git://url_git:/chemin_repository/<name_repo>.git
ou
git remote add nom_projet ssh://url_git:/chemin_repository/<name_repo>.git
La commande suivante permet de vérifier les alias:
git remote -v
Ensuite, il nous reste à pousser (push) les commit de notre projet sur le serveur distant.
git push origin master
Voilà, tout est en ordre, au niveau configuration. Maintenant dans Xcode vous trouverez l’alias qu’on a créé dans Xcode > Préférences Capture_d’écran_2014-08-05_à_16_51_47 Et vous pourrez maintenant directement faire dans Xcode des pull et des push via le menu Source Control! Capture d’écran 2014-08-05 à 16.52.39 Pour récupérer un dépôt existant, par exemple pour qu’un collaborateur récupère votre projet, il faut faire un clone
git clone git://url_git:/chemin_repository/nom_projet.git

Création d’une nouvelle branche depuis mon master

git checkout -b v1.1

Pour voir les différentes branches de mon projet

git branch

Pour que quelqu’un d’autre se plug sur votre nouvelle branche

git checkout v1.1

Ensuite les prochains commit/push

git add -—all
git commit -m "message"
git push monProjet v1.1
git pull monProjet v1.1

Pour réinitialiser un fichier modifié localement

git checkout -- path/file

Si vous souhaitez annuler tous les changements de vos fichiers non commités

# Revert changes to modified files.
git reset --hard

Pour remettre la branche locale dans le même état qu’une branche remote

git reset --hard origin/somebranch

Si vous souhaitez appliquer les changements « pushé » précédemment dans une branch sur votre branch locale

git pull origin nom-de-la-branch

Cette commande fait un git fetch + git merge

Pour exécuter un commit d’une autre branche sur votre branch actuelle

git cherry-pick id-du-commit

Pour récupérer les commentaires et id des derniers commit des gens:

git log -n 10

Cloner un repository distant dans une branche local dev

git clone url_git/nom_.git -b dev

En conclusion, sur GIT, les branches locales doivent être de même nom que les branches distantes (remote).
Pour merger deux branches, connecter vous via checkout sur votre branche dev par exemple et ensuite faites un «git merge int » et donc la branche dev est équivalente à int 

git merge int
Pour comparer les modification de fichiers dans un dossier entre deux branches:
git diff master..yourbranch path/to/folder
Pour appliquer les changement effectuer dans gitignore de fichier déjà pusher:
> git rm -r --cached .
> git add .
> git commit -m ".gitignore is now working"
Pour mettre un git sous la dernière version du git sur le remote:
> git fetch --all
> git reset --hard origin/master

Tags: Git