Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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 修剪上游不再存在的原始分支_Git_Git Branch_Git Fork - Fatal编程技术网

Git 修剪上游不再存在的原始分支

Git 修剪上游不再存在的原始分支,git,git-branch,git-fork,Git,Git Branch,Git Fork,这些分支位于上游 这些是我叉子上的树枝 上游回购协议在我分叉后已经更新。我找不到办法从我的分叉上移除上游不再存在的分支。显示如何同步提交历史记录 这个问题有没有一个简单的解决方案?一个技巧是用上游url替换本地回购协议中引用您的fork的来源: 然后,一个命令git fetch-prune将在本地删除所有过时的远程跟踪分支,即remotes/origin/xxx,这些分支不在上游,由“origin”临时引用 最后,您可以为每个remotes/origin/xxx分支检查remotes/origi

这些分支位于上游

这些是我叉子上的树枝

上游回购协议在我分叉后已经更新。我找不到办法从我的分叉上移除上游不再存在的分支。显示如何同步提交历史记录

这个问题有没有一个简单的解决方案?

一个技巧是用上游url替换本地回购协议中引用您的fork的来源:

然后,一个命令git fetch-prune将在本地删除所有过时的远程跟踪分支,即remotes/origin/xxx,这些分支不在上游,由“origin”临时引用

最后,您可以为每个remotes/origin/xxx分支检查remotes/origin/xxx是否存在。如果没有:git push-delete-ori-xxx

类似于:在bash中

for f in $(git for-each-ref refs/remotes/ori --format '%(refname:short)' |
       sed 's,ori/,,') do;
   git rev-parse -q --verify refs/remotes/origin/$f >/dev/null || 
      git push --delete ori ${f}
done
该脚本可以放在git cleanup或任何git xxx名称中,并用git cleanup或git xxx调用。这样,它就可以在自己的bash中运行,甚至可以在Windows上运行

要完成:

git remote remove origin
git remote rename ori origin
一个技巧是用上游url替换本地回购协议中引用分支的来源:

然后,一个命令git fetch-prune将在本地删除所有过时的远程跟踪分支,即remotes/origin/xxx,这些分支不在上游,由“origin”临时引用

最后,您可以为每个remotes/origin/xxx分支检查remotes/origin/xxx是否存在。如果没有:git push-delete-ori-xxx

类似于:在bash中

for f in $(git for-each-ref refs/remotes/ori --format '%(refname:short)' |
       sed 's,ori/,,') do;
   git rev-parse -q --verify refs/remotes/origin/$f >/dev/null || 
      git push --delete ori ${f}
done
该脚本可以放在git cleanup或任何git xxx名称中,并用git cleanup或git xxx调用。这样,它就可以在自己的bash中运行,甚至可以在Windows上运行

要完成:

git remote remove origin
git remote rename ori origin

不错,但是为了使脚本在将来发生更改时可靠,Git的ref name代码已经转换为可插拔的后端,为每个ref用Git替换find.Git,不幸的是,这需要使用sed或类似的方法来编辑远程设备的名称。完成了,但我没有合适的repo进行测试,所以我单独测试了各个部件。另外,我不使用Wndows,>/dev/null在那里工作吗?人们希望WIndows bash模拟/dev/null…:-非常感谢。在Windows上,它是nul。明天我会复习你的编辑。我在手机上,躺在床上,正要睡觉。很好,但为了使脚本可靠,以防将来发生更改Git的ref name代码已转换为可插拔的后端,请将find.Git替换为Git,因为每个ref都需要使用sed或类似的工具来编辑远程设备的名称。完成了,但我没有合适的repo进行测试,所以我单独测试了各个部件。另外,我不使用Wndows,>/dev/null在那里工作吗?人们希望WIndows bash模拟/dev/null…:-非常感谢。在Windows上,它是nul。明天我会复习你的编辑。我在打电话,躺在床上,快要睡觉了。
git remote remove origin
git remote rename ori origin