Pour suivre ce tutoriel, il faut bien sur avoir un compte sur GitHub. L'accès est gratuit et très réputé au près des développeurs : https://github.com
Après avoir suivi ce tutoriel, nous allons pourvoir organiser notre code source avec Git.
Pour visualiser les branches facilement, nous pouvons utiliser l'utilitaire gitg ou grv.
Pour commencer, son installation est simple sous Linux puisqu'il suffit de faire :
apt install git
Les fichiers de configurations se situent dans :
Ainsi la configuration minimale doit être dans le fichier ~/.gitconfig :
[user] name = Bruno Tatu email = brnotatu@domaine.com [pull] rebase = true [push] default = simple [core] editor = vim
Mémorisation du mot de mot de passe durant 15 minutes :
git config --global credential.helper cache
Dans le cas d'un développement seul sans collaborateur, on peut commencer par initier son dépôt en local :
mkdir projet && cd projet git init
git clone https://your_repository.git
git add fichier1 fichier2 fichier3
git commit -m "Mon intitulé"
git commit -am "Mon nouvel intitulé"
git commit --amend
git log git log --graph --date-order
git status
git push
Admettons que nous voulons travailler sur un projet spécifique sans vouloir déranger le branche principal :
git checkout -b nouvelle-branche
Après quelques modifications d'un code source et après avoir commité ;
git push -u origin nouvelle-branche
-u équivaut à –set-upstream
git pull git checkout master git merge nouvelle-branche
git branch -d nouvelle-branche
Admettons que l'on souhaite participer à un projet libre, on télécharge le projet puis on créer notre propre branche.
git clone https://github.com/Fusing/irc2telegram.git
git checkout -b nouvelle-branche
git request-pull origin/master nouvelle-branche # git push # ou git checkout master git merge nouvelle-branche
git branch -d nouvelle-branche git push origin --delete branche2
Il peut arriver qu'un collaborateur push un commit avant le vautre alors que l'on a oublier de faire un pull juste avant son propre commit. Dans ce cas, il est possible de déplacer notre commit vers la dernière position du commit en cours.
git rebase master
git rebase --abort
git cherry-pick <SHA1> <SHA1>
git remove show origin
git remove rename ancien-nom nouveau-nom
git remote rm dépôt
git remote set-url origin git@gitea.$DOMAIN.org:$DOSSIER/$NOM-DEPOT.git
git tag v0.01
git show v0.01
git push origin --tags
git add mon-fichier-editer
git commit --amend
git stash -u
git stash apply [stash@{2}] git stash drop [stash@{2}]
git stash pop
git stash show -p stash@{2}
Admettons que le projet est gros et que nous avons une faible bande passante. Il sera alors intéressant de télécharger qu'une seule branche :
git clone -b branche1 --single-branch http://git.bruno-tatu.com/test.git
On voudrait merger le travail mais on a besoin de la branche principale (master). Il faudra alors éditer le fichier suivant :
nano .git/config
et remplacer le mot branche1 par master et indiquer que l'on accepte le rebase :
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = http://git.bruno-tatu.com/test.git fetch = +refs/heads/master:refs/remotes/origin/master [branch "master"] remote = origin merge = refs/heads/master rebase = true
Il restera plus qu'a faire la récupération :
git fetch origin
Il est possible de télécharger une seconde branche sans avoir celle du master :
git remote set-branches --add origin branche2 git fetch origin branche2:branche2 git checkout branche2
Suite aux modifications, faites un commit pour l'envoyé sur le serveur :
git add fichier3.txt git commit -am "ajout fichier3-branche2" git push -u origin branche2
# faire "git a" git config --global alias.a add # faire "git l" git config --global alias.last 'log -3 HEAD' # faire "git s" git config --global alias.s status
git reset --hard <tag/branch/commit id> git revert <commit id>
nano .gitignore
_site/
git rm --cached _site/ -r
git diff
git mergetool
git rm fichier.txt
git mv fichier.txt destination/fichier.txt
git push origin branche1:branche2
git branch -m ancien nouveau
git reset HEAD fichier.txt
git reset --hard
git blame fichier.txt
git show HEAD~1
git show -p HEAD~3..HEAD~1
git remote set-url origin utilisateur@mon-domaine.com:adresse/depot/utilisateur/distant.git
git checkout -B 16 d171d1aff8df2f784c1814ef93a63cdfc3749335
https://stackoverflow.com/questions/26570242/how-to-move-master-to-head
git branch -f master $ID git checkout master