“eenvoudig” versus “huidig” push.default in git voor gedecentraliseerde workflow

Functioneel gezien zie ik in een gedecentraliseerde workflow het verschil niet tussen simpleen currentopties voor de push.defaultconfiguratie-instelling .

currentzal de huidige branch naar een gelijknamige branch op de gespecificeerde remote pushen. simplezal in feite hetzelfde doen voor zowel de getraceerde als niet-getrackte remotes voor de huidige branch (het dwingt in beide gevallen identieke branchnamen af).

Kan iemand de belangrijke verschillen tussen de twee uitleggen voor gedecentraliseerde workflows die ik mis?


Antwoord 1, autoriteit 100%

Het verschil is dat met simple, git push(zonder een refspec door te geven) zal mislukken als de huidige branch geen remote upstream branch volgt (zelfs als een branch met dezelfde naam bestaat op de afstandsbediening):

$ 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

Aan de andere kant maakt het currentniet uit of de huidige branch een upstream volgt, het wil gewoon naar elke branch met dezelfde naam pushen:

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

De documentatie

Van de Git-configuratiedocumentatie:

  • upstream– duw de huidige branch naar zijn upstream branch…

  • simple– zoals stroomopwaarts, maar weigert te pushen als de naam van de stroomopwaartse tak anders is dan de lokale naam…

  • current– duw de huidige vertakking naar een vertakking met dezelfde naam.


Antwoord 2, autoriteit 6%

Het verschil is dat simplenaar zijn tracking-branch pusht als deze dezelfde naam heeft, terwijl currentnaar een branch met dezelfde naam pusht, ongeacht een tracking-branch :

$ 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` 

Other episodes