web-dev-qa-db-fra.com

"simple" vs "courant" Push.default dans git pour un flux de travail décentralisé

Sur le plan fonctionnel, dans un flux de travail décentralisé, je ne vois pas la différence entre les options simple et current pour Push.default paramètre de configuration.

current va pousser la branche actuelle vers une branche du même nom sur la télécommande spécifiée. simple fera la même chose pour les télécommandes suivies et toutes les télécommandes non suivies pour la branche actuelle (les noms de branche identiques seront appliqués dans les deux cas).

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

108
void.pointer

La différence est qu'avec simple, git Push _ (sans passer un refspec) échouera si la branche en cours ne suit pas une branche en amont distante (même si une branche du même nom existe sur la base distante):

$ 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 branche actuelle suit ou non un amont, elle veut simplement transmettre à une branche du 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

Depuis le documentation de configuration Git :

  • upstream - Poussez la branche actuelle vers sa branche amont ...

  • simple - comme en amont, mais refuse de pousser si le nom de la branche en amont est différent de celui de la branche locale ...

  • current - Déplace la branche actuelle vers une branche du même nom.

165
user456814

La différence est que simple passe à sa branche de suivi si elle porte le même nom, alors que current poussera vers une branche du même nom, quelle que soit la branche 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` 
8
jthill