【问题标题】:Which remote branches are my local git-svn branches bound to?我的本地 git-svn 分支绑定到哪些远程分支?
【发布时间】:2014-01-07 15:40:40
【问题描述】:

我使用 git-svn 在我的克隆仓库中有以下 .config 文件:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[svn-remote "svn"] 
    url = https://svn.domain.com:8443/svn
    fetch = trunk:refs/remotes/trunk
    branches = branches/{some_branch}:refs/remotes/branches/*

当我执行git branch -a 时,我得到:

$ git branch -a
* master
  remotes/branches/some_branch
  remotes/trunk

我如何知道本地master 分支绑定到哪个远程(跟踪)?请注意,这个答案似乎必须特定于 git-svn,因为普通的 git 解决方案(例如git remote show origin)不起作用。

编辑
在仔细阅读我的问题后,我不确定它是否有意义。基本上我只想知道哪个SVN分支'master'绑定到。我假设遥控器是分支,但它们实际上只是其他 repos AFAIK 的 URL。所以,我真正想要的是远程SVN分支和本地分支之间的映射。

【问题讨论】:

    标签: git git-svn


    【解决方案1】:

    我真正想要的是远程SVN分支和本地之间的映射 分支。

    答案是:没有(至少不是通常意义上的)。

    详细说明:

    通常,在 git 中有两种类型的分支

    一个本地分支可以链接到一个远程跟踪分支(和一个副本)(可能带有更改) - 然后远程跟踪分支被称为本地分支的“上游分支”。这种“上游关系”存储在 repo config (.git/config) 中,在 git branch -vv 的输出中可见。

    现在问题是:git-svn 没有上游分支的概念

    特别是它不会在 git config 中存储上游关系,因此像 git branch -vv 这样的命令无法显示它。

    git 使用“上游分支”来决定从哪里拉取和推送到哪里(或多或少;它是可配置的)。

    相比之下,git-svn 只是简单地将本地分支的历史追溯到来自 SVN 的最新提交(带有“git-svn-id”的最新提交)。该提交还将命名它创建的 SVN 分支(即 SVN 存储库中的路径)(它是“git-svn-id”之后字符串的一部分)。然后 git-svn 将使用该 SVN 分支。

    这在git-svn manpage中有描述:

    注意以下规则: git svn dcommit 将尝试在顶部提交 在

    中命名的SVN提交

    git log --grep=^git-svn-id: --first-parent -1

    手册中没有注明,但我相信git svn rebase使用了类似的规则。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 2016-10-25
      • 2016-04-12
      • 2019-03-08
      • 2021-04-17
      相关资源
      最近更新 更多