【问题标题】:Find the REMOTE parent branch of a LOCAL git branch查找本地 git 分支的远程父分支
【发布时间】:2018-09-12 03:43:37
【问题描述】:

如何获取远程git 分支的名称,本地git 当前提交是从该分支分支的?

我假设这是一个 4 步过程,前三个步骤可能如下:


第一步:在本地git repo中获取当前分支的名称:
git rev-parse --abbrev-ref HEAD    


第二步:从本地仓库获取当前签出的提交的哈希值:
git rev-parse HEAD          # full hash  


第三步:在远程git repo上获取上游跟踪分支的名称:
git rev-parse --abbrev-ref @{upstream}


第四步:在远程 git repo 上获取父上游跟踪分支的名称:

执行此操作需要哪些特定代码?在阅读了@ChrisJohnsen 对this other posting 的回答后,我想该解决方案涉及查找从远程存储库中的另一个分支派生的最新提交。但是,链接帖子的答案中的代码似乎都是为本地存储库设计的。 这个当前的问题不同,因为我问的是如何从本地存储库子分支中找到远程存储库父分支。

我添加了bash 标签,因为这些命令运行在可以使用bash 脚本的CentOS 服务器上。

【问题讨论】:

    标签: bash git github version-control


    【解决方案1】:

    要通过查看所有分支结构来获取远程父分支,您可以通过以下任何命令将提交历史打印为图形:

    gitk --all
    git log --oneline --decorate --graph --all
    

    要通过脚本只为本地分支获取远程父分支,您可以基于远程分支创建本地临时分支。然后你可以从临时分支中找到本地分支的父分支。找到temp分支是本地分支的父分支后,就可以对应得到远程分支了。最后,删除所有临时分支。详细步骤如下:

    1. git branch -r列出所有远程分支(假设远程分支为origin/masterorigin/devorigin/feature)。

    2. 从本地分支获取跟踪/远程分支

      使用命令git rev-parse --abbrev-ref @{upstream} 获取给定本地分支的远程分支的方法(假设它是origin/master 分支,您想找到它的父分支)。

    3. 从远程分支分别创建本地临时分支

      git branch -b origin-master origin/master        #Create a local branch origin-master from origin/master
      git branch -b origin-dev origin/dev
      git branach -b origin-feature origin/feature
      
    4. 从临时分支中找到父分支

      现在您只需要从所有临时分支(origin-masterorigin-dev 和 origin-feature)中找到 origin-master 分支的父分支。它转换为与帖子 (Find the parent branch of a Git branch) 显示的情况相同的情况。并且可以使用同样的方式来实现。

    5. 将父分支转换为对应的远程分支

      如发现origin-master分支的父分支为origin-dev,则将-替换为/即可得到远程父分支名称origin/dev

    6. 删除所有临时分支

      git branch -D origin-master
      git branch -D origin-dev
      git branch -D origin-feature
      

    【讨论】:

      【解决方案2】:

      但是,链接帖子的答案中的代码似乎都是为本地存储库设计的。

      不过,您仍然可以应用 that code 并检查结果(最近的祖先分支)is a remote branch(在初始 git fetch 之后)还是 nor。
      如果不是,请检查该本地父分支的父分支。

      【讨论】:

        猜你喜欢
        • 2015-10-19
        • 1970-01-01
        • 2016-02-22
        • 2016-04-12
        • 1970-01-01
        • 2022-11-19
        • 2016-10-25
        • 2010-09-27
        • 2010-12-20
        相关资源
        最近更新 更多