Git

JE VAIS VOUS LE DIRE FRANCHEMENT : Git est exaspérant.

Attendez ! Ne partez pas tout de suite. Oui, Git est insupportable. Mais il est également indispensable1)

Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2.

Une très intéressante contribution du journaliste scientifique Clay Shirky, Comment internet transformera un jour le gouvernement?, qui évoque git et la possibilité (toute théorique) de l'utiliser comme outil législatif et budgétaire: https://www.ted.com/talks/clay_shirky_how_the_internet_will_one_day_transform_government

sudo apt-get install git-core gitk
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto
git config --global user.name "PSEUDO"
git config --global user.email EMAIL

vi ~/.gitconfig
[color]
        diff = auto
        status = auto
        branch = auto
[user]
        name = johndoe
        email = johndoe@coincoin.org
[alias]
        ci = commit
        co = checkout
        st = status
        br = branch

Mettre les clés ssh nécessaires puis sur chaque client:

 git config --global user.name "<username goes here>"

sur le serveur avec le dépôt

  git config receive.denyCurrentBranch ignore

Les commandes de base

fork then

git remote add origin git@github.com:USER/PROJECT.git

git pull git@github.com:USER/PROJECT.git
git st
git add...
hg commit -m "comment"
git push git@github.com:USER/PROJECT.git
https://github.com/zpartakov/vamosAcomer
git log
#details d'un commit
git show 0943dce3be9c4a0f21c397f62ea18f78a4bcea26

Revenir en arrière d'un commit

  git reset --hard HEAD^

Revenir en arrière sur un commit spécifique

  git reset --hard 13e8d052383d96c1cdfef188ede3dd4fdffd53ad

ou 13e8d052383d96c1cdfef188ede3dd4fdffd53ad est le numéro du commit

doc: https://git-scm.com/docs/git-reset

git log --patch  | less +/searching_string

chercher les revisions d'un auteur “Jon”

git log --author=Jon

git grep [motifDeRecherche]

si on veut chercher ds ttes les versions

 git log -p grep ...

doc https://linuxhint.com/use-grep-git-repository/

Clone project:

  git clone git@example.com:project-name.git

Create branch with your feature:

  git checkout -b $feature_name

Write code. Commit changes:

  git commit -am "My feature is ready"

Push your branch to GitLab:

  git push origin $feature_name

voir https://docs.gitlab.com/ee/gitlab-basics/feature_branch_workflow.html#feature-branch-workflow

 git clone -b my-branch https://git@github.com/username/myproject.git

exemple, cloner la branche stable de limesurvey et la mettre à jour

 git clone -b 2.06lts git@github.com:LimeSurvey/LimeSurvey.git
 git pull git@github.com:LimeSurvey/LimeSurvey.git 2.06lts

Si vous avez un peu suivi le débat en informatique on a plus le droit de dire master et slave paske c'est mal. Donc maintenant faut dire main et… en fait je sais pas: soumis? Je crois c'est secondary

En tout cas, certains providers git exigent maintenant qu'on appelle la branche principale master.

Comment changer: https://andycostanza.gitlab.io/blog/fr/posts/2022/renommer_master_en_main_avec_git/

Thks, Andy C.!

C'est toujours mieux que rien, mais que cela ne vous empêche pas de changer p. ex. des mots de passe de connexion MySQL ou autres qui auraient été exposés! Car on a aucun moyen de savoir ce qui a filtré ou non pendant que les données étaient exposées.
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' \
--prune-empty --tag-name-filter cat -- --all
git commit
git push origin --force --all

Pour avoir tous les sous-modules d'un repository git

git submodule update --init --recursive

le plus simple:

  echo "Deny from all" > .git/.htaccess

https://nouslesdevs.com/cli/securiser-un-git/

Si vous avez un méchant message lors d'un pull ou d'un push genre:

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Déclarer les clés dans la section Deploy Keys pour le dépot:

https://gitlab.com/yourName/yourRepo/-/settings/repository

Voir l'onglet “Clefs de déploiement à accès privé”

How to use "git clone" with a custom SSH key

Sometimes you need to clone a Git repo with a different SSH key.: https://ralphjsmit.com/git-custom-ssh-key

Versions paquet zip/tarball to download with source code

git tag -a v1.0 #changer pour la bonne version
git push --tags [optional git repo]]

Tutoriels

Bouquins

git GUI

des clients graphiques pour git

gitcraken, un client graphique simple à configurer pour voir vos projets git

source: http://www.gitkraken.com/

abandonné, passait son temps à faire de la pub pour sa version payante

qgit version graphique

GitLab

Version web libre de git avec une vue kanboard

https://gitlab.com/

c'est le plus simple si vous ne voulez pas installer tout le tintouin…

Mon espace gitlab: https://gitlab.com/zpartakov

Système de ticketing de gitlab

Utiliser gitlab comme outil collaboratif de gestion de projet/tâches

Github

Github a été racheté par MS. C'est donc mal. On peut facilement migrer ses dépôts sur gitlab, qui est libre et opensource: Switching from GitHub to GitLab.

Et si vous voulez qu'on vous voie toujours sur windaube, ben suffit de laisser votre repo ouvert et de pointer depuis sur vos repos ouverts.

GitHub provides some official RSS feeds officially:

  Repo releases: https://github.com/:owner/:repo/releases.atom
  Repo commits: https://github.com/:owner/:repo/commits.atom
  User activities: https://github.com/:user.atom
  Private feed: https://github.com/:user.private.atom?token=:secret (You can find Subscribe to your news feed in dashboard page after login)

Credits: https://stackoverflow.com/questions/7353538/setting-up-a-github-commit-rss-feed#7353586

Tips

Voir aussi


1)
source: l'excellent David Demaree, Git par la pratique paru chez Eyrolles, que je vous recommande chaudement, voir infra sous “Bouquins”
  • info/git/homepage.txt
  • Dernière modification : 2023/09/05 09:41
  • de radeff