查看集成分支是否包含本地分支的提示
Find out if integration branch contains tip of local branches
我想获取可以安全删除的分支列表。我的问题是,有没有办法确定 remotes/origin/dev
是否包含提交,而不检查该分支?
git fetch origin;
git branch | while read branch; do
if [ "remotes/origin/dev" --contains "$b" ]; then
echo "$b";
fi
done
如何检查 remotes/origin/dev
是否包含给定分支的最新提交?我可以不先签出 remotes/origin/dev
吗?
使用:
if git merge-base --is-ancestor $b refs/remotes/origin/dev; then
echo $b
fi
但是不要为此使用 git branch
!使用 git for-each-ref
代替:
git fetch origin
git for-each-ref --format='%(refname)' refs/heads | while read b; do
git merge-base --is-ancestor $b refs/remotes/origin/dev && echo ${b#refs/heads/}
done
例如。 (这对所有内容都使用全名,以防万一,但仍然会发出缩写名称。)
问题:
- 分支 B 是否包含提交 C?
(对于某些分支名称/标识符 B,包括远程跟踪名称和提交哈希或其他标识符 C)实际上是git merge-base
命令回答的另一个更一般问题的子集。
更一般的问题是:
- 提交 C1 是提交 C2 的祖先吗?
其中 "ancestor of" 允许相等。这是 git merge-base --is-ancestor C1 C2
执行的测试。请注意,这些项目中的任何一项都可能是哈希 ID 或引用名称,结果是退出状态的一部分(足够适当)。 --is-ancestor
测试是 Git 1.8.0 中的新测试。
我想获取可以安全删除的分支列表。我的问题是,有没有办法确定 remotes/origin/dev
是否包含提交,而不检查该分支?
git fetch origin;
git branch | while read branch; do
if [ "remotes/origin/dev" --contains "$b" ]; then
echo "$b";
fi
done
如何检查 remotes/origin/dev
是否包含给定分支的最新提交?我可以不先签出 remotes/origin/dev
吗?
使用:
if git merge-base --is-ancestor $b refs/remotes/origin/dev; then
echo $b
fi
但是不要为此使用 git branch
!使用 git for-each-ref
代替:
git fetch origin
git for-each-ref --format='%(refname)' refs/heads | while read b; do
git merge-base --is-ancestor $b refs/remotes/origin/dev && echo ${b#refs/heads/}
done
例如。 (这对所有内容都使用全名,以防万一,但仍然会发出缩写名称。)
问题:
- 分支 B 是否包含提交 C?
(对于某些分支名称/标识符 B,包括远程跟踪名称和提交哈希或其他标识符 C)实际上是git merge-base
命令回答的另一个更一般问题的子集。
更一般的问题是:
- 提交 C1 是提交 C2 的祖先吗?
其中 "ancestor of" 允许相等。这是 git merge-base --is-ancestor C1 C2
执行的测试。请注意,这些项目中的任何一项都可能是哈希 ID 或引用名称,结果是退出状态的一部分(足够适当)。 --is-ancestor
测试是 Git 1.8.0 中的新测试。