Git :查找所有符合*删除条件的远程分支(*最后一次提交是对 master 的合并)
Git : Find all remote branches eligible* for deletion (* last commit is a merge to master )
我知道已经有人以类似的方式提出了这个问题。但是,我正在寻找更严格的资格标准即。我只对
的分支感兴趣
- 已合并到 master
- 合并后没有进一步提交
掌握
这是为了避免删除有一些进一步(可能有价值)工作但尚未合并到 master 的分支(通过可能的遗漏、放弃的拉取请求等)
建议的解决方案如下:
假设:假设最老的祖先是 origin/master。这是标准做法,但说出来也无妨。
git branch -r --list --contains `git rev-list --max-parents=0 origin/master`| grep -v origin\/master | sed 's/^..\(.*\)//' | xargs -I {} sh -c "echo -n {}' : '; git log --graph -n 1 {} | grep -c '^|[\]\ \ Merge'"
循序渐进
- 查找所有将初始主提交作为
后代。
- 对于每个分支,检查最新的提交是否合并回最旧的祖先。
输出报告如下所示。分支旁边的 1 表示它有资格删除
origin/0.2016.02-release : 1
origin/0.2016.03-release : 1
origin/Fix-for-NPE-schedule-master : 0
origin/Fix-possible-infinite-loop-master : 0
origin/Fixing-unit-tests-master : 0
origin/NoBodyRequiredForActivity-master : 0
origin/Removing-not-needed-dependency-master : 0
origin/updateDevServiceConfig-master : 0
origin/updateServerPort-master : 0
origin/updatedPom : 1
希望这对寻找类似内容的任何人有所帮助。欢迎提出任何建议和改进
更简单,对于这种特殊情况(检查哪些远程跟踪分支完全合并到 master
):
git branch -r --merged master
(当然 --no-merged
对于那些可能仍然需要改进的,根据 上的评论)。
我知道已经有人以类似的方式提出了这个问题。但是,我正在寻找更严格的资格标准即。我只对
的分支感兴趣- 已合并到 master
- 合并后没有进一步提交 掌握
这是为了避免删除有一些进一步(可能有价值)工作但尚未合并到 master 的分支(通过可能的遗漏、放弃的拉取请求等)
建议的解决方案如下:
假设:假设最老的祖先是 origin/master。这是标准做法,但说出来也无妨。
git branch -r --list --contains `git rev-list --max-parents=0 origin/master`| grep -v origin\/master | sed 's/^..\(.*\)//' | xargs -I {} sh -c "echo -n {}' : '; git log --graph -n 1 {} | grep -c '^|[\]\ \ Merge'"
循序渐进
- 查找所有将初始主提交作为 后代。
- 对于每个分支,检查最新的提交是否合并回最旧的祖先。
输出报告如下所示。分支旁边的 1 表示它有资格删除
origin/0.2016.02-release : 1
origin/0.2016.03-release : 1
origin/Fix-for-NPE-schedule-master : 0
origin/Fix-possible-infinite-loop-master : 0
origin/Fixing-unit-tests-master : 0
origin/NoBodyRequiredForActivity-master : 0
origin/Removing-not-needed-dependency-master : 0
origin/updateDevServiceConfig-master : 0
origin/updateServerPort-master : 0
origin/updatedPom : 1
希望这对寻找类似内容的任何人有所帮助。欢迎提出任何建议和改进
更简单,对于这种特殊情况(检查哪些远程跟踪分支完全合并到 master
):
git branch -r --merged master
(当然 --no-merged
对于那些可能仍然需要改进的,根据