&引用;简单的;vs";“当前”;git中用于分散工作流的push.default

&引用;简单的;vs";“当前”;git中用于分散工作流的push.default,git,git-push,git-config,Git,Git Push,Git Config,从功能上讲,在分散式工作流中,simple和current的push.defaultconfig设置选项之间没有区别 current将当前分支推送到指定远程服务器上同名的分支简单将有效地为当前分支的跟踪和任何未跟踪远程执行相同的操作(在这两种情况下,它强制执行相同的分支名称) 有人能解释一下我所缺少的分散式工作流的两个重要区别吗?区别在于使用simple,git push(不通过refspec)将在当前分支未跟踪远程上游分支时失败(即使远程分支上存在同名分支): 另一方面,current不关心当

从功能上讲,在分散式工作流中,
simple
current
push.default
config设置选项之间没有区别

current
将当前分支推送到指定远程服务器上同名的分支<代码>简单将有效地为当前分支的跟踪和任何未跟踪远程执行相同的操作(在这两种情况下,它强制执行相同的分支名称)


有人能解释一下我所缺少的分散式工作流的两个重要区别吗?

区别在于使用
simple
git push
(不通过refspec)将在当前分支未跟踪远程上游分支时失败(即使远程分支上存在同名分支):

另一方面,
current
不关心当前分支是否跟踪上游,它只想推送到具有相同名称的任何分支:

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

  • 上游
    -将当前分支推送到其上游分支

  • 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` 
$git分支-vvv
主机58d9fdc[原点/主机:前方1]t1 bobo

*新的37132d3[origin/save:ahead 1]t1 bibi#可能是@Trevor的复制品-这与我的问题毫无关系。我想唯一的“奖金”问题是“为什么”。我想强制上游跟踪分支可以消除错误(在错误的遥控器上意外覆盖该分支)。简单似乎是更安全的“安全带”选项。过了很长一段时间后,重新审视我自己的问题:-)当前<代码>如何知道选择哪个遥控器?如果没有设置跟踪分支,它将推送到哪里?它将推送到默认的远程->这意味着原点。From man git push:当命令行未使用参数指定推送位置时,请选择branch.*。请参考当前分支的远程配置以确定推送位置。如果配置丢失,它默认为origin。我多年来一直使用“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`