----- menupriority: 1 kind: article created_at: 2009-08-18T14:44:31+02:00 title: Git en solo author_name: Yann Esposito author_uri: yannesposito.com tags: - git - svn - workflow ----- <%= blogimage("central_architecture.png","central architecture") %> 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
git-get-remote-branches
#!/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