GIT : ligne de commande

git logo

Aujourd’hui quelques lignes de commande pour bien démarrer avec Git (GitHub, BitBucket, …).

GENERAL

// init du "repository" (à faire une fois pour initialiser le "repository" git au tout debut)
git init

// voir l'état du "repository"
git status

COMMIT

// ajouter à l'index
git add hello.js
// commit (-m pour "Message")
git commit -m "Mon message pour ce commit"

// OU possible si le fichier a déjà été ajouté à l'index 1 fois (="git add hello.js"). Permet de faire le "add + message" en une seule ligne.
git commit -am "Mon message pour ce commit"
// envoyer sur github (par exemple)
git push origin master

LOG

// afficher le log (=historique). Quitter log avec "q"
git log

// afficher toutes les différences de chaque commit
git log -p

// permet d'afficher le log en "inline"
git log --oneline

// permet d'afficher le log en mode "graphique" (pour visualiser les branches)
git log --graph --oneline

// rechercher les commits pour un auteur x
git log --author=michael

// rechercher un commit avec un message x
git log --grep="lorem"

RESET

// annuler un fichier ajouté avec "git add ." par exemple
git reset HEAD -- hello.js

REMOTE

git remote add origin https://github.com/<name>/<repo>.git
git push -u origin master

BRANCH

// afficher les branches existantes
git branch

// voir toutes les branches
git branch -a

// creer branch
git branch nom-branche-ici

// changer de branche
git checkout nom-branche-ici // on passe sur la branche "nom-branche-ici"
git checkout master // on passe sur la branche "master"

// OU
// creer branche + se positionner dans cette nouvelle branche
git checkout -b nom-de-la-branche

TAG

// add tag
git tag <tagname>
// ou pour créer une description / annotation au tag
git tag <tagname> -a

// les tags ne sont pas inclus lorsque vous poussez sur le remote.
// vous devez lui indiquer que vous désirez pousser vos tags sur le repository (remote).
git push origin --tags

FLOW

// init de votre structure (feature / bugfix / release / hotfix)
git flow init

// débuter un correctif (par exemple)
git flow hotfix start hotfix_branch

// terminer le correctif (merger, tagger avec "hotfix_branch", supprimer)
git flow hotfix finish hotfix_branch

FETCH & PULL (Récupérer les modifications) :

// Fetch : récupérer toutes les données des commits effectués sur la branche courante qui n'existent pas encore dans votre version en local. Ces données seront stockées dans le répertoire de travail local mais ne seront pas fusionnées avec votre branche locale. Si vous souhaitez fusionner ces données pour que votre branche soit à jour, vous devez utiliser ensuite la commande git merge.
git fetch

// Pull : télécharge les données des commits qui n'ont pas encore été récupérées dans votre branche locale puis fusionne ensuite ces données (git pull = git fetch + git merge).
git pull

// ou encore mieux
git pull --rebase

// ou encore encore mieux (configurer tous vos prochains "git pull" pour qu'ils réalisent un "git pull -rebase" systèmatiquement)
git config --global branch.autosetuprebase always
git pull

MERGE (fusionner 2 branches)

// on se positionne sur une branch
git checkout nom-branche-ici

// on fusionne le contenu de "master" dans la branch "nom-branche-ici"
git merge master

// ou en une ligne
git merge master nom-branche-ici

REBASE

git checkout nom-branche-ici
git rebase master

// ou en mode interactif (avec le -i)
git checkout nom-branche-ici
git rebase -i master

RETROUVER QUI A FAIT LA MODIF

// voir qui a effectué les modifs
git blame hello.js

// voir le contenu des modifs (8544682 correspond au sha)
git show 8544682

.gitignore Permet d’ignorer certain fichier lors de l’envoi (generator gitignore)

// editer .gitignore puis ajouter les fichiers à ignorer
config/config.php
mon-fichier.php
etc …

Divers :

// Si lors d'un clone il vous est demandé : 
// - Are you sure you want to continue connecting (yes/no/[fingerprint])?
// Alors ajouté le fingerprint, qui correspond au SHA256:xxxxxxxx... 
// Il sera ajouté dans le know_hosts, et ne vous sera plus demander ensuite.
git clone git@bitbucket.org:monUsername/monProjet.git


Cloning into 'mon_projet'...
The authenticity of host 'bitbucket.org (xxxx:xxxx:xxxx::xxxx:xxxx)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


// creer un fichier
touch hello.js
echo > hello.js

// editer le fichier (:x permet de sauvegarder les modifications effectuées sur le fichier)
vim hello.js

// afficher le contenu du fichier (read only)
cat hello.js
tail hello.js

// nombre de ligne, mot, caractère 
wc hello.js

// ouvrir le fichier sous Mac/Linux (dans le soft par défaut)
open hello.js

// ouvrir le dossier courant sous Mac/Linux
open .

// ouvrir le dossier courant sous Windows
start .

// copier contenu du fichier
pbcopy < ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa.pub | pbcopy

// afficher le path
pwd

// recherche dernière commande indiquée (ex : commençant par "git log ...")
history | grep "git log" 

// ajouter vos informations / identités
git config --global user.name "John DOE"
git config --global user.email "john.doe@tld.com"
git config -l

// t'es où git
which git

// t'es où php.ini
locate php.ini

// NPM - pour checker les failles de sécurité
npm audit

// NPM - pour fixer vos dépendances (en conséquence)
npm audit fix

// Ouvrir fichier de log avec la date du jour
tail -f /chemin/log-$(date +%Y-%m-%d)-worker-error
tail -n 50 -f /xxx/yyy/zzz

// Appliquer les droits du user sur le dossier nommé "mon_dossier" :
sudo chown -R $USER ~/mon_dossier

// changer les droits pour tous les dossiers
find . -type d -exec chmod 755 {} \;

// changer les droits pour tous les fichiers
find . -type f -exec chmod 644 {} \;

// PrestaShop - Download/unzip :
wget https://download.prestashop.com/download/releases/prestashop_1.7.7.7.zip && unzip prestashop_1.7.7.7.zip && rm index.php && rm Install* && unzip prestashop.zip && rm prestashop_1.7.7.7.zip && rm prestashop.zip


Terminal (plus fun) :

Vous pouvez installer ZSH, qui vous apportera un meilleur confort d’utilisation de votre terminal.

Ce placer dans le dossier plugin de zsh (~/.oh-my-zsh/custom/plugins/), puis :
git clone https://github.com/zsh-users/zsh-autosuggestions
$ZSH_CUSTOM/plugins/zsh-autosuggestions

Pour finir, ouvrez ~/.zshrc et ajouté « zsh-autosuggestions » dans la section nommée « plugins=( ici ) » :
plugins=(
    git
    zsh-autosuggestions
)

Ce qui donnera une fois installé :

zsh-autosuggestions

source : https://medium.freecodecamp.org/jazz-up-your-zsh-terminal-in-seven-steps-a-visual-guide-e81a8fd59a38 

Apprendre git avec un jeu :

Solutions en ligne :

Logiciels :

Sources :

Michael

Développeur / intégrateur, travaillant en agence web depuis 2005, je viens à présent vous proposer de venir découvrir mes créations personnelles de plugins / themes pour le CMS Wordpress & Prestashop, quelques solutions en mode SAAS & un peu d'actualité web ( / Twitter).

Vous aimerez aussi...