"простой "против" текущего " толчка.по умолчанию в git для децентрализованного рабочего процесса


функционально говоря, в децентрализованном рабочем процессе я не вижу разницы между simple и current варианты push.default конфигурации.

current переместит текущую ветвь в ветвь с одинаковым именем на указанном удаленном устройстве. simple будет эффективно делать то же самое, как для отслеживаемых, так и для любых неотслеживаемых пультов дистанционного управления для текущей ветви (он обеспечивает идентичные имена ветвей в обоих случаях).

может кто-нибудь объяснить какие-либо важные различия между двумя децентрализованными рабочими процессами, которые мне не хватает?

2 92

2 ответа:

разница в том, что с 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 - отправка текущей ветки в ветку с тем же названием.

разница в том, что 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`