0

简而言之,我想知道最新的提交 ID,也可以在origin. 我可以创建许多分支,从特定的提交 ID 创建一棵树,但所有分支都派生自一个提交 ID,该提交 ID 也位于origin.

git merge-base要求两个分支。获取当前分支名称是没有问题的(HEAD),但是我不知道如何获取远程分支的名称。不仅仅是任何远程分支,而是当前分支最近派生的分支。这是可能的,还是我需要采取另一种方法?关于我能做什么的任何提示?

4

1 回答 1

2

如果您知道要查找的远程分支,则可以这样说:

git merge-base master origin/master

如果您只是有一个任意的本地提交并且想知道您从哪个分支分支,您可以提供git merge-base多个远程分支:

git merge-base HEAD origin/master origin/feature-xy origin/something

如果您甚至不知道哪个远程分支可能是正确的,那么您必须自己去。生成所有远程分支的列表并将它们传递给git merge-base上面的类似内容。或者用于git rev-list浏览您的本地历史记录并用于git branch -r --contains确定是否存在包含给定提交的远程分支。


另一种方法是使用:

git log --boundary --decorate --graph HEAD --not --remotes

这将列出不在任何远程分支中的所有提交和远程(边界)的第一次提交。在边界提交上使用git branch -r --contains $SHA1以了解涉及哪个远程分支。


Forethinker的最终解决方案:

如果您只想要远程第一次提交的 SHA-1:

git rev-list --boundary HEAD --not --remotes | tail -1 | grep -o -E -e "[0-9a-f]{40}"
于 2013-11-06T03:44:24.240 回答