给定SHA-1哈希值,是否有方法确定提交来自哪个分支?
如果你能告诉我如何使用Ruby Grit实现这一点,那就加分。
给定SHA-1哈希值,是否有方法确定提交来自哪个分支?
如果你能告诉我如何使用Ruby Grit实现这一点,那就加分。
当前回答
一个穷人的选择是在HEAD上使用工具tig1,搜索提交,然后直观地从提交开始一直到看到合并提交。默认合并消息应指定要合并到的分支位置:)
1Tig是一个基于ncurses的Git文本模式界面。它的功能主要作为Git存储库浏览器,但它也可以帮助更改块级别的提交,并充当各种Git命令。
其他回答
我认为有人应该面临同样的问题,无法找到分支,尽管它实际上存在于一个分支中。
你最好先把所有东西都拔出来:
git pull --all
然后执行分支搜索:
git name-rev <SHA>
or:
git branch --contains <SHA>
作为一个实验,我制作了一个提交后挂钩,它在提交元数据中存储关于当前签出的分支的信息。我还略微修改了gitk以显示该信息。
你可以在这里查看:https://github.com/pajp/branch-info-commits
khichar.anil在回答中涵盖了大部分内容。
我只是添加了一个标志,它将从修订名称列表中删除标记。这给了我们:
git name-rev --name-only --exclude=tags/* $SHA
例如,要发现c0118fa提交来自redesign_interactions:
* ccfd449 (HEAD -> develop) Require to return undef if no digits found
* 93dd5ff Merge pull request #4 from KES777/clean_api
|\
| * 39d82d1 Fix tc0118faests for debugging debugger internals
| * ed67179 Move &push_frame out of core
| * 2fd84b5 Do not lose info about call point
| * 3ab09a2 Improve debugger output: Show info about emitted events
| * a435005 Merge branch 'redesign_interactions' into clean_api
| |\
| | * a06cc29 Code comments
| | * d5d6266 Remove copy/paste code
| | * c0118fa Allow command to choose how continue interaction
| | * 19cb534 Emit &interact event
您应该运行:
git log c0118fa..HEAD --ancestry-path --merges
然后向下滚动以找到最后一次合并提交。即:
commit a435005445a6752dfe788b8d994e155b3cd9778f
Merge: 0953cac a06cc29
Author: Eugen Konkov
Date: Sat Oct 1 00:54:18 2016 +0300
Merge branch 'redesign_interactions' into clean_api
使现代化
或者只需要一个命令:
git log c0118fa..HEAD --ancestry-path --merges --oneline --color | tail -n 1
这个简单的命令就像一个符咒:
git名称rev<SHA>
例如(其中测试分支是分支名称):
git name-rev 651ad3a
251ad3a remotes/origin/test-branch
即使这样也适用于复杂的场景,例如:
origin/branchA/
/branchB
/commit<SHA1>
/commit<SHA2>
这里git-namerev-commit<SHA2>返回branchB。