找到LOCAL git分支的REMOTE父分支

Cod*_*Med 5 git bash version-control github

如何获取git本地git当前提交已分支的远程分支的名称?

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


第一步:获取本地git仓库中当前分支的名称:

git rev-parse --abbrev-ref HEAD    
Run Code Online (Sandbox Code Playgroud)


第二步:从本地仓库获取当前检出的提交的哈希值:

git rev-parse HEAD          # full hash  
Run Code Online (Sandbox Code Playgroud)


第三步:获取远程git仓库上游跟踪分支的名称:

git rev-parse --abbrev-ref @{upstream}
Run Code Online (Sandbox Code Playgroud)


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

这样做需要什么具体代码?在阅读了@ ChrisJohnsen对其他帖子的回答之后,我想这个解决方案涉及查找从远程存储库中的另一个分支派生的最新提交.但是,链接发布的答案中的代码似乎都是为本地存储库设计的. 这个当前的问题是不同的,因为我问如何从本地存储库子分支中找到远程存储库父分支.

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

Mar*_*Liu 3

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

\n\n
gitk --all\ngit log --oneline --decorate --graph --all\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
    \n
  1. 列出所有远程分支git branch -r(假设远程分支是origin/masterorigin/dev并且origin/feature)。

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

    \n\n

    使用命令获取给定本地分支的远程分支的方法git rev-parse --abbrev-ref @{upstream}(假设\xe2\x80\x99sorigin/master父分支的 it\xe2\x80\x99s 分支)。

  4. \n
  5. 分别从远程分支创建本地临时分支

    \n\n
    git branch -b origin-master origin/master        #Create a local branch origin-master from origin/master\ngit branch -b origin-dev origin/dev\ngit branach -b origin-feature origin/feature\n
    Run Code Online (Sandbox Code Playgroud)
  6. \n
  7. 从临时分支中查找父分支

    \n\n

    现在您只需要从origin-master所有临时分支( 和 o )中找到branch\xe2\x80\x99sorigin-masterorigin-dev分支rigin-feature。它转换为与帖子(查找 Git 分支的父分支)所示的情况相同的情况。并且可以用同样的方式来实现。

  8. \n
  9. 将父分支转换为对应的远程分支

    \n\n

    比如你找到origin-masterbranch的父分支是origin-dev,然后替换-to/即可得到远程父分支名称origin/dev

  10. \n
  11. 删除所有临时分支

    \n\n
    git branch -D origin-master\ngit branch -D origin-dev\ngit branch -D origin-feature\n
    Run Code Online (Sandbox Code Playgroud)
  12. \n
\n