我目前正在与一个团队合作开展一个项目。该项目有许多分支机构并行开发。
这是我遇到的问题:我正在研究几个分支,尽可能地提交。显然,有时候我在完成分支工作后忘记推送提交。这导致长时间的未经改变,当然,团队的其他成员将在这些"未固定的"分支,它可能会导致问题。在任何时候,在其他分支上工作时,git告诉我,我已经在其他分支上删除了提交,而不是当前分支。
是否有一个命令,类似于git cherry -v
,表示所有分支上的未提交提交?
我注意到我可以使用git cherry -v origin/branchA branchA
来显示来自任何分支的未分配的branchA提交。它与我正在寻找的非常接近,但我同时希望它适用于所有分支机构。有没有办法将它推广到所有分支? (我不希望记得我忘了推哪个分支)
答案 0 :(得分:0)
你可以写一个简单的脚本:
(在.bashrc中)
alias git-list-unpushed='git for-each-ref --format "%(refname)" | grep "refs/remotes" | sed "s@refs/remotes/@@" | while read branch; do echo "$branch"; git cherry -v "$branch" "${branch/origin\//}"; done'
然后你可以运行git-list-unpushed来查看每个分支的所有未删除提交的摘要
答案 1 :(得分:0)
根据edi9999的想法,我创建了以下脚本:
#!/bin/sh
branches=$(git for-each-ref --format='%(upstream:short):%(refname:short)' refs/heads)
for raw_branch in $branches; do
remote_branch=$(cut -d ':' -f 1 <<< "$raw_branch")
local_branch=$(cut -d ':' -f 2 <<< "$raw_branch")
echo $local_branch
if [ "x$remote_branch" == "x" ]; then
echo WARNING: No remote branch!
else
git cherry -v "$remote_branch" "$local_branch"
fi
echo
done
由于:
始终存在,cut
应该是好的。