我有一个场景,在我的本地存储库中有一些我必须同步的远程跟踪分支。我们的工作流程模型是:
我注意到“git status”并没有显示我的本地分支所基于的分支,除非有什么变化;即未提交的本地更改或最近的提取使我的本地分支落后于时代。有没有办法知道我的本地分支基于什么分支而不必改变东西?类似于“git status -showparentbranch”或其他一些可以显示此命令的命令。偶尔我遇到这种需要,但还不知道如何满足它。
答案 0 :(得分:39)
试试这个:
git log --graph --decorate
答案 1 :(得分:17)
Git不会跟踪提交的分支。没有办法说出来。如果提交发生在您的仓库中,那么您可以检查reflog,但这就是它。在the Pro Git book中查看DAG的说明 - 也可以阅读那里的reflog。
您还可以使用gitk --all
或git 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)
有多种检查方法。我最终获得了免费的方式来获得此结果。
使用gitkraken(付费用于私人存储库!),它为您提供了一种查看分支和提交树的绝妙方法。向下滑动,您将到达父分支的根。
如果您使用bitbucket,则它们会在Web中提供视图以查看所有分支的所有提交(通过从下拉列表中选择 all分支)。
免费,通过git commnad。
git log --graph --decorate --oneline --all
同伴说明
git log查看日志。
--graph以图形形式查看日志。
--decorate以创辉模式查看日志。
--oneline查看日志,在提交中仅排一行而不是全部详细信息。
--all查看日志,所有分支。 (对于解决此问题很重要)