Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 关闭拉请求并删除远程@{push}分支时清理本地分支_Git_Github_Version Control - Fatal编程技术网

Git 关闭拉请求并删除远程@{push}分支时清理本地分支

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) 我定期运行一个自定

我的GitHub/GitLab工作流是:

  • git checkout-b refs/remotes/up/HEAD my feature
    (注意分支跟踪上游,而不是我的fork的PR分支)
  • git push
    (我的git配置中有
    remote.pushdefault=fork
  • 在GitHub中合并PR(扩展在我合并后自动删除fork
    my feature
    分支)
  • git fetch--all
    删除
    fork/my feature
    跟踪分支(我的git配置中有
    fetch.prune=true
  • 我定期运行一个自定义的
    git分支修剪
    来批量清理本地
    my feature
    分支
  • 以前,我会让PR分支跟踪
    fork/my feature
    (他们推到的分支)而不是
    up/HEAD
    (我要提高PR的分支),但这会让一些工作流变得烦人。自从发现和通过,我已经切换到上述。除了my
    branch 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
    完成