GIT

2021-9-4 Dev
  • Git
About 2 min

# GIT

# Configurer le proxy sur GIT

git config –global http.proxy http[s]:userName:password@proxyaddress:port
1

# Configurer redirection d'url sur GIT

git config –global url.https://github.com/.insteadOf git:github.com/
1

Exemple d'un fichier ~/.gitconfig :

[url "https://github.com/"]
    insteadOf = git://github.com/
[url "https://github.com/"]
    insteadOf = ssh://git@github.com/
[http]
    sslVerify = false
    proxy = http://login:pwd@proxys:80
[user]
    name = Clement BERARD
    email = mail@monmail.com
[https]
    sslVerify = false
    proxy = http://login:pwd@proxy.com:80
1
2
3
4
5
6
7
8
9
10
11
12
13

# Retrouver l'état précedent des fichiers

Ce sujet est une source constante d’incompréhension pour beaucoup d’utilisateurs de git, simplement parce qu’il y a plusieurs manières d’accomplir cette tache. Voici quelques commandes simples pour revenir en arière. Ainsi, pour revenir à l’état original d’un fichier :

git checkout <file>
1

Un problème possible est qu’un fichier et une branche portent le même nom. Comme la commande ‘checkout’ est utilisée à la fois pour changer l’état d’un fichier et changer de branche, il vous faudra utliser la syntaxe suivante (Merci , Norbauer)

git checkout – <file>
1

Si vous voulez supprimer tous les changements effectués, il y a une deux manières de faire.

git checkout -f ou git reset –HARD
1

Une fois ces commandes effectuées, vous perdrez tout le travail que vous n’avez pas ajouté à votre répertoire courant, assurez vous de les utiliser avec soin.

De plus, garder à l’esprit que ‘git revert’ n’est pas équivalent à ‘svn revert’! git-revert est utilisé pour inverser les ajouts (commit), une prochaine astuce traitera de ce sujet.

# Rebase

# Rebase clasique

git checkout feature_branch
git rebase master
1
2

Et la il peut y avoir des conflits. Il faut les corriger puis :

git rebase --continue
1

Si vous voulez stopper le rebase en cours de route :

git rebase --abort
1

# Sur une autre branche que Master

Use Case :

  • Je créé une branche feat-1 à partir de master et j'y apporte des modifications

  • Je créé une autre branche feat-2 à partir de feat-1

  • Pour mettre à jour feat-1, je dois la rebase sur master

  • Pour mettre à jour feat-2, je dois la rebase sur feat-1

Note

Bien garder toutes vos branches en local

git checkout feat-1
git rebase origin/master

git checkout feat-2
git rebase --onto origin/master feat-1
1
2
3
4
5

# Rebase interractif

git rebase -i master
1

# Merge

git checkout master
git merge --squash feature_branch
1
2

Et un commit/push sur la master et c'est fini 🎉

# Push en supprimant l'historique

et donc preserver de l'espace disque

git checkout --orphan newBranch
git add -A
git commit
git branch -D master
git branch -m master
git push -f origin master
git gc --aggressive --prune=all
1
2
3
4
5
6
7

# Keep your feature branch up to date (Rebase automatique)

Function (alias) pour rebase une branche sur la dernière version de master

Put this function in your .bashrc or .zshrc. It automates it for you.

function rebaseMaster(){
  git fetch && git checkout master && git pull && git checkout - && git rebase master
}
1
2
3

# Git Config

# Alias

ℹ️ Doc Git (opens new window)

$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
1
2
3
4

# My config

Content of ~/Users/myname/.gitconfig

[user]
        name = Clément BERARD
        email = myname@clementberard.com
[core]
        excludesfile = /Users/myname/.gitignore_global
        autocrlf = input
[alias]
        co = checkout
        cob = checkout -b
        st = status
        pof = "push origin --force"
        po = "push origin"
        br = branch
        ci = "commit --message"
        last = "log -n 1 --pretty=format:\"%H\""
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# Useful commands

Hash du dernier commit

Exemple sur la branche origin/master

git log -n 1 --pretty=format:"%H" master
1

Squash de tous les commits d'une branche

ℹ️ Utilisation de git-extra

Avoir toutes ses branches à jour en local

# recuperation du dernier commit de master

git log -n 1 --pretty=format:"%H" master

# le dernier commit est b3357c607c3a49b532bffec7a6b5fb62841262c5

git squash b3357c607c3a49b532bffec7a6b5fb62841262c5 "nouveau nom de commit"
1
2
3
4
5
6
7

# Useful tools

git-extra