【问题标题】:"simple" vs "current" push.default in git for decentralized workflowgit 中的“简单”与“当前”push.default 用于分散工作流
【发布时间】:2014-07-18 01:22:04
【问题描述】:

从功能上讲,在分散的工作流程中,我看不出push.default 配置设置的simplecurrent 选项之间的区别。

current 会将当前分支推送到指定远程上的同名分支。 simple 将有效地对当前分支的跟踪和任何未跟踪的远程执行相同的操作(它在两种情况下强制执行相同的分支名称)。

对于我所缺少的分散式工作流程,有人可以解释两者之间的任何重要区别吗?

【问题讨论】:

标签: git git-push git-config


【解决方案1】:

不同之处在于simplegit 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 configuration documentation

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

  • simple - 与上游类似,但如果上游分支的名称与本地不同,则拒绝推送...

  • current - 将当前分支推送到同名分支。

【讨论】:

  • 我猜唯一的“奖励”问题是“为什么”。我猜强制上游跟踪分支可以消除错误(不小心覆盖了错误遥控器上的那个分支)。
  • 简单似乎是更安全的“安全带”选项。
  • 很久之后重新审视我自己的问题 :-) current 怎么知道选择哪个遥控器?如果你没有跟踪分支集,它会推送到哪里?
  • 它推送到默认远程 -> 这意味着原点。来自 man git-push:当命令行未使用 参数指定推送位置时,会参考当前分支的 branch.*.remote 配置以确定推送位置。如果缺少配置,则默认为 origin。
  • 多年来我一直使用“当前”,完全没有问题。在大多数情况下,它可以工作:拉/推到一个存储库,创建新分支或检查不太可能发生命名冲突的现有分支。只是工作,没有问题。不能说它应该是默认值(因为它不安全),但谢天谢地它存在。
【解决方案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` 

【讨论】:

    猜你喜欢
    • 2013-10-30
    • 2014-05-04
    • 2018-12-14
    • 1970-01-01
    • 2019-10-20
    • 2012-08-06
    • 2013-09-07
    • 1970-01-01
    相关资源
    最近更新 更多