如何判断我的分支基于哪个远程“父”分支?

时间:2011-06-23 15:24:21

标签: git git-remote git-status

我有一个场景,在我的本地存储库中有一些我必须同步的远程跟踪分支。我们的工作流程模型是:

  • 根据所需的远程跟踪分支在本地创建分支
  • 进行更改
  • 构建/测试/修复
  • 提交
  • 推回远程服务器

我注意到“git status”并没有显示我的本地分支所基于的分支,除非有什么变化;即未提交的本地更改或最近的提取使我的本地分支落后于时代。有没有办法知道我的本地分支基于什么分支而不必改变东西?类似于“git status -showparentbranch”或其他一些可以显示此命令的命令。偶尔我遇到这种需要,但还不知道如何满足它。

5 个答案:

答案 0 :(得分:39)

试试这个:

git log --graph --decorate

答案 1 :(得分:17)

Git不会跟踪提交的分支。没有办法说出来。如果提交发生在您的仓库中,那么您可以检查reflog,但这就是它。在the Pro Git book中查看DAG的说明 - 也可以阅读那里的reflog。

您还可以使用gitk --allgit log --graph --decorate

更好地直观地显示历史记录

希望这有帮助。

答案 2 :(得分:10)

git branch -vv将:

  • 列出所有您当地的分支机构
  • 显示每个本地分支旁边的远程分支的名称
  • 突出显示活动的本地分支

...从这里你可以确定当前活动分支的远程分支,以及更多。

如果您有很多本地分支机构,则列表可能会很长。使用git branch -vv | grep SOMEWORD将输出限制为仅包含SOMEWORD的分支。如果您能想到分支独有的单词,您将获得最佳过滤器(仅限一个结果)。

您还将在输出中获得一些额外的数据,即数字(SHA1)和上次提交的消息。 grep过滤器将适用于这些。我找不到排除它的方法。

来自Git branch documentation

  

-v

     

-vv

     

- 详细

     

在列表模式下,显示每个头的sha1和提交主题行,以及与上游分支(如果有)的关系。如果给出两次,也打印上游分支的名称(另请参阅git remote show)。

(基于你的评论,是的,似乎'正确'的问题会询问“远程”分支而不是“父”分支。但这也是我搜索的内容!:))

答案 3 :(得分:2)

你也可以尝试一下:

git rev-parse --abbrev-ref --symbolic-full-name @{u}

在.gitconfig文件中使用此别名:

[alias]
    showparentbranch = rev-parse --abbrev-ref --symbolic-full-name @{u}

然后你可以简单地打电话:

git showparentbranch

在git版本2.10.2.windows.1上进行了测试

答案 4 :(得分:0)

有多种检查方法。我最终获得了免费的方式来获得此结果。

  1. 使用gitkraken(付费用于私人存储库!),它为您提供了一种查看分支和提交树的绝妙方法。向下滑动,您将到达父分支的根。

  2. 如果您使用bitbucket,则它们会在Web中提供视图以查看所有分支的所有提交(通过从下拉列表中选择 all分支)。

  3. 免费,通过git commnad。

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

    同伴说明

    git log查看日志。

    --graph以图形形式查看日志。

    --decorate以创辉模式查看日志。

    --oneline查看日志,在提交中仅排一行而不是全部详细信息。

    --all查看日志,所有分支。 (对于解决此问题很重要