我知道如何将父提交称为HEAD^
。
但是可以以类似的方式引用子提交吗?
答案 0 :(得分:1)
git log --reverse --children -n1 HEAD
应该有用。
git log --reverse --children -n1 HEAD --pretty=format:"%H" --no-patch
如果您只想查看提交的哈希值。
答案 1 :(得分:1)
列出所有已分离HEAD的子项
使用此别名:
# Get all children of current or specified commit-ish
children = "!bash -c 'c=${1:-HEAD}; set -- $(git rev-list --all --not \"$c\"^@ --children | grep $(git rev-parse \"$c\") ); shift; echo $*' -"
git children
然后会列出所有分离的HEAD的子项。
列出特定儿童
如果您只想要特定分支的祖先中的孩子:
根据this question的答案,我在.gitconfig
中删除了这个别名。
# Get the child commit of the current commit.
# Use $1 instead of 'HEAD' if given. Use $2 instead of curent branch if given.
child = "!bash -c 'git log --format=%H --reverse --ancestry-path ${1:-HEAD}..${2:\"$(git rev-parse --abbrev-ref HEAD)\"} | head -1' -"
在您的情况下,您将其用作:git child HEAD
<tip>
,其中tip是commit-ish,通常是包含分离头的分支名称。
例如:git child HEAD branchname
它默认为给孩子HEAD(除非给出另一个commit-ish参数),方法是将祖先跟随当前分支的一步(除非给出另一个commit-ish作为第二个参数)。但请注意,对于分离的头部,“当前分支”未定义。
如果您需要短哈希表单,请使用%h
代替%H
。
答案 2 :(得分:1)
Git通过查看记录的亲子关系,即时获取子信息。基线提交查找器为git rev-list
,它可以跟踪有趣提交的祖先路径,因此:
git rev-list --ancestry-path --all --reflog --parents ^HEAD | grep `git rev-parse HEAD`
或者
git rev-list --boundary --ancestry-path --all --reflog --children ^HEAD \
| grep ^-$(git rev-parse HEAD)