如何仅在分支与主分支不同时才推送分支?



目标

只有当分支与本地主节点不同时,我才想推送分支。更具体地说,如果分支指向与本地主节点相同的提交,我不想推送分支。

背景

我的公司有数百个 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>'

但是他的,显然......,也推动"空"分支(即我刚刚创建了一个分支但没有提交它(。

首先,

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)

相关内容

  • 没有找到相关文章

最新更新