列出所有分支中的未删除提交

时间:2016-03-31 09:29:45

标签: git push commit

我目前正在与一个团队合作开展一个项目。该项目有许多分支机构并行开发。

这是我遇到的问题:我正在研究几个分支,尽可能地提交。显然,有时候我在完成分支工作后忘记推送提交。这导致长时间的未经改变,当然,团队的其他成员将在这些"未固定的"分支,它可能会导致问题。在任何时候,在其他分支上工作时,git告诉我,我已经在其他分支上删除了提交,而不是当前分支。

是否有一个命令,类似于git cherry -v,表示所有分支上的未提交提交?

我注意到我可以使用git cherry -v origin/branchA branchA来显示来自任何分支的未分配的branchA提交。它与我正在寻找的非常接近,但我同时希望它适用于所有分支机构。有没有办法将它推广到所有分支? (我不希望记得我忘了推哪个分支)

2 个答案:

答案 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应该是好的。