如何获取本地 git
当前提交分支的远程 git
分支的名称?
我假设这是一个 4 步过程,前三个步骤可能如下:
第一步:获取本地git repo中当前分支的名称:
git rev-parse --abbrev-ref HEAD
第二步:从本地仓库获取当前 checkout 的提交的哈希值:
git rev-parse HEAD # full hash
第三步:获取远程git repo 上游跟踪分支的名称:
git rev-parse --abbrev-ref @{upstream}
第四步:获取远程git repo上的父上游跟踪分支名称:
执行此操作需要什么特定代码?阅读@ChrisJohnsen 对 this other posting 的回答后,我想解决方案涉及寻找从远程存储库中的另一个分支派生的最新提交。但是,链接帖子的答案中的代码似乎都是为本地存储库设计的。 当前的问题是不同的,因为我问的是如何从本地存储库子分支中找到远程存储库父分支。
我正在添加 bash
标签,因为这些命令在可以使用 bash
脚本的 CentOS 服务器上运行。
最佳答案
要通过查看所有分支结构来获取远程父分支,您可以通过以下任何命令将提交历史打印为图表:
gitk --all
git log --oneline --decorate --graph --all
要通过脚本只获取本地分支的远程父分支,您可以基于远程分支创建本地临时分支。然后就可以从临时分支中找到本地分支的父分支。找到临时分支是本地分支的父分支后,就可以对应的获取远程分支了。最后,删除所有临时分支。详细步骤如下:
通过
git branch -r
列出所有远程分支(假设远程分支是origin/master
,origin/dev
和来源/特征
)。从本地分支获取跟踪/远程分支
使用命令
git rev-parse --abbrev-ref @{upstream}
获取给定本地分支的远程分支的方法(假设它是origin/master
分支,你想找到它的父分支)。分别从远程分支创建本地临时分支
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
从临时分支中找到父分支
现在只需要从所有临时分支(
origin-master
,origin-dev
和o原始特征
)。它转换为与帖子 ( Find the parent branch of a Git branch) 显示相同的情况。并且你可以用同样的方式来实现。将父分支转换为对应的远程分支
比如你发现
origin-master
分支的父分支是origin-dev
,那么把-
替换成/
获取远程父分支名称origin/dev
。删除所有临时分支
git branch -D origin-master git branch -D origin-dev git branch -D origin-feature
关于bash - 找到本地 git 分支的远程父分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49619492/