"simple" vs "current" push.default в git для децентрализованного рабочего процесса
Функционально говоря, в децентрализованном рабочем процессе я не вижу разницы между параметрами simple
и current
для настройки push.default
.
current
будет вытолкнуть текущую ветку на ветку с одинаковым именем на указанном пульте. simple
будет эффективно выполнять то же самое как для отслеживаемых, так и для любых невосстановленных пультов для текущей ветки (в обоих случаях они выполняют одинаковые имена ветвей).
Может кто-нибудь объяснить какие-либо важные различия между этими двумя для децентрализованных рабочих процессов, которые мне не хватает?
Ответы
Ответ 1
Различие заключается в том, что при simple
, git push
(без передачи refspec) произойдет сбой, если текущая ветка не отслеживает удаленную ветвь вверх по течению (даже если ветвь с тем же именем существует на удаленном компьютере):
$ 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
С другой стороны, current
не заботится о том, отслеживает ли текущая ветка восходящий поток, просто хочет нажать на любую ветку с таким же именем:
$ git config push.default current
$ git push
Total 0 (delta 0), reused 0 (delta 0)
To /Documents/GitHub/bare
* [new branch] foo-> foo
Документация
В документации Git:
-
upstream
- нажмите текущую ветвь на свою ветвь вверх по течению...
-
simple
- как вверх по течению, но отказывается выдвигать, если имя ветки восходящего потока отличается от локального...
-
current
- нажмите текущую ветвь на ветвь с тем же именем.
Ответ 2
Разница в том, что simple
подталкивает ее ветку отслеживания, если она имеет то же имя, а current
будет нажимать на ветвь с тем же именем независимо от какой-либо ветки отслеживания:
$ 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`