Git 关闭拉请求并删除远程@{push}分支时清理本地分支
我的GitHub/GitLab工作流是:Git 关闭拉请求并删除远程@{push}分支时清理本地分支,git,github,version-control,Git,Github,Version Control,我的GitHub/GitLab工作流是: git checkout-b refs/remotes/up/HEAD my feature(注意分支跟踪上游,而不是我的fork的PR分支) git push(我的git配置中有remote.pushdefault=fork) 在GitHub中合并PR(扩展在我合并后自动删除forkmy feature分支) git fetch--all删除fork/my feature跟踪分支(我的git配置中有fetch.prune=true) 我定期运行一个自定
git checkout-b refs/remotes/up/HEAD my feature
(注意分支跟踪上游,而不是我的fork的PR分支)git push
(我的git配置中有remote.pushdefault=fork
)my feature
分支)git fetch--all
删除fork/my feature
跟踪分支(我的git配置中有fetch.prune=true
)git分支修剪
来批量清理本地my feature
分支fork/my feature
(他们推到的分支)而不是up/HEAD
(我要提高PR的分支),但这会让一些工作流变得烦人。自从发现和通过,我已经切换到上述。除了mybranch prune
alias不再工作之外,一切都很好:
# Delete orphaned local branches.
branch-prune = "!git fetch --prune && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -D"
我有一个变通方法,但我不确定它会有多好,我希望有更好的解决方法。我当前的变通方法是在我的
$PATH
中添加以下脚本作为名为git branch prune
的可执行文件:
这似乎适用于与GitHub的重新基础和合并
合并的东西,但我还没有尝试使用挤压和合并
或创建合并提交
,我怀疑他们可能会破坏git cherry
检查
#/bin/bash
#`git branch prune`:删除提交已合并的本地分支。
分支到修剪=()
当read-r分支向上分支时;做
#如果任何远程系统中没有同名的远程跟踪分支,
if[-z$(对于$(git remote)中的remote;dogit rev parse--verify--quiet“$remote/$branch”;done)]]&&
#上游分支存在,
[-n“$up_分行”]]&&
#上游分支包含fork分支中的所有提交。
! git cherry-v“$up_branch”“$branch”| grep-q'^+';然后
#那么我们应该删除该分支。
分支到修剪+=(“$branch”)
fi
完成