Functioneel gezien zie ik in een gedecentraliseerde workflow het verschil niet tussen simple
en current
opties voor de push.default
configuratie-instelling .
current
zal de huidige branch naar een gelijknamige branch op de gespecificeerde remote pushen. simple
zal 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 current
niet 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 simple
naar zijn tracking-branch pusht als deze dezelfde naam heeft, terwijl current
naar 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`