仅当分支与本地主节点不同时,我才想推送分支。更具体地说,如果分支指向与本地主节点相同的提交,则我不希望推送分支。
我的公司有数百个git存储库,并且我们不使用git子模块,因此对于系统范围的清理,我有一个非常简单的bash脚本:
for gitdir in `find ./ -name .git|sort`;
do
workdir=${gitdir%/*};
cd $workdir
eval "$*"
cd $BASE_DIR
done
我这样跑:
./for_each_repo.sh 'git checkout -b <bname> && <some command> && git commit -m <message>''
然后我可以对存储库进行其他一些更改。
最后,我跑步:
./for_each_repo.sh 'git push origin <bname>'
但是,显然,他的...也会推送“空”分支(即我刚刚创建分支但未提交的分支)。
答案 0 :(得分:3)
首先
git for-each-ref --no-merged=master --format='%(refname:short)' refs/heads
将列出所有带有新提交(尚未合并到master
中的分支)的分支。
然后,您可以将其链接到您的推送命令
git push origin $(git for-each-ref --no-merged=master --format='%(refname:short)' refs/heads)