----- # Custom # isHidden: true menupriority: 1 kind: article created_at: 2009-08-18T14:44:31+02:00 title: Git for self multiTitle: fr: Git en solo en: Git for self multiDescription: fr: J'utilise Git pour des projets personnels gérés à partir de plusieurs oridinateurs. Voici comment concilier les avantages de Git avec un workflow proche de celui de SVN. en: I use Git for personnal projects on many differents computers. Here is how to use almost the SVN workflow with all advantages of Git. tags: - git - svn - workflow ----- <%= blogimage("central architecture","central_architecture.png") %> J'utilise [Git](http://www.git-scm.org/) pour gérer mes projets personnels. J'ai un *repository* centralisé et tous mes ordinateurs se synchronisent avec lui. Cependant, dans la documentation officielle, je n'ai pas trouvé clairement ce que je souhaitais. En d'autres termes, si vous souhaitez utiliser le type de *workflow* que SVN proposait avec Git (et ses avantages), voici comment procéder. newcorps ## Initialisation Disons que j'ai déjà un projet et que je veuille en créer un nouveau.
cd to/project/directory/
git init
git add
git commit
to/project/directory/
sont *versionnés*. Si vous voulez ignorer certains fichiers il suffit de modifier le fichier .gitignore
.
Par exemple voici le mien :
*.swp
.DS_Store
ikog.py.bak
output/Scratch/assets
output/Scratch/en
output/Scratch/fr
output/Scratch/multi
git clone --bare . protocol://url/of/the/repository
git clone protocol://url/of/the/repository local_directory
local_directory
contiendra un projet à jour.
git pull
hack, hack, hack...
git add some files
git commit
git push
push
et le pull
; vérifiez votre fichier .git/config
. Il devrait contenir les lignes suivantes :
...
[remote "origin"]
url = protocol://url/of/the/repository
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
...
git-create-new-branch branch_name
et quand je suis sur un autre ordinateur et que je veux récupérer les branches crées sur un autre poste, j'exécute :
git-get-remote-branches
Voici le code des deux script (en zsh) :
#!/usr/bin/env zsh
if (($#<1)); then
print -- "usage: $0:t branch_name" >&2
exit 1
fi
branch=$1
git br ${branch}
git co ${branch}
git config branch.${branch}.remote origin
git config branch.${branch}.merge refs/heads/${branch}
#!/usr/bin/env zsh
# recup branches not on local
localbranches=( $(git br | sed 's/\*/ /') )
remoteMissingBranches=( $(git br -r | \
egrep -v "origin/HEAD|(${(j:|:)localbranches})" ) )
for br in $remoteMissingBranches; do
branch=${br#origin/}
print "get remote branch $branch"
git br ${branch}
git config branch.${branch}.remote origin
git config branch.${branch}.merge refs/heads/${branch}
done