----- # Custom # isHidden: true menupriority: 1 kind: article date: 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") %> I use [Git](http://www.git-scm.org/) to manage my personnal projects. I have a centralized repository which all my computer should synchronize with. Unfortunately I didn't find clearly what I needed on the official Git documentation. In two words, if you want to use an SVN workflow with Git (and all its advantages) here is how to proceed. newcorps ## Initialisation Suppose I've got a directory on my local computer containing a project I want to manage via Git. Here what to do:
cd to/project/directory/
git init
git add
git commit
to/project/directory/
are versionned.
If you want not to follow some just edit the file .gitignore
fr:Maintenant tous les fichiers du répertoire to/project/directory/
sont *versionnés*. Si vous voulez ignorer certains fichiers il suffit de modifier le fichier .gitignore
.
for example mine is:
*.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
will contain an up-to-date project.
git pull
hack, hack, hack...
git add some files
git commit
git push
push
and pull
verify your .git/config
file ; it should contain the following lines:
...
[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