Push.default «simple» vs «actuel» dans git pour un workflow décentralisé

Fonctionnellement parlant, dans un workflow décentralisé, je ne vois pas la différence entre current options simple et current options current pour le push.default de push.default .

current poussera la twig en cours vers une twig portant le même nom sur la télécommande spécifiée. simple fera effectivement la même chose pour les télécommandes suivies et les télécommandes non suivies pour la twig en cours (elle applique des noms de twig identiques dans les deux cas).

Quelqu’un peut-il expliquer les différences importantes entre les deux pour les stream de travail décentralisés qui me manquent?

La différence est que, avec simple , git push (sans passer de refspec) échouera si la twig en cours ne suit pas une twig en amont distante (même si une twig portant le même nom existe sur la télécommande):

 $ git checkout -b foo Switched to a new branch 'foo' $ git config push.default simple $ git push fatal: The current branch foo has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin foo 

D’un autre côté, current ne se soucie pas de savoir si la twig actuelle suit ou non un stream amont, elle veut juste pousser vers n’importe quelle twig qui porte le même nom:

 $ git config push.default current $ git push Total 0 (delta 0), reused 0 (delta 0) To /Documents/GitHub/bare * [new branch] foo-> foo 

La documentation

De la documentation de configuration de Git :

  • upstream – pousse la twig actuelle vers sa twig amont …

  • simple – comme en amont, mais refuse de pousser si le nom de la twig en amont est différent du nom local …

  • current – pousse la twig actuelle vers une twig du même nom.

La différence est que le simple pousser vers sa twig de suivi si elle porte le même nom, alors que current poussera vers une twig du même nom, quelle que soit la twig de suivi:

 $ git branch -vvv master 58d9fdc [origin/master: ahead 1] t1 bobo * new 37132d3 [origin/save: ahead 1] t1 bibi # <- tracking branch 'save' $ git -c push.default=current push # <- set `push.default=current` Counting objects: 3, done. Writing objects: 100% (3/3), 234 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To /home/jthill/sandbox/20/t1 * [new branch] new -> new # <- and push creates `new`