我在BitBucket上创建了一个git仓库的分支(我们称之为fork_origin
)。现在,上游存储库(让我们称之为upstream_origin
)已经将许多分支合并到它的主服务器中并被删除。所以正在运行
git fetch --prune upstream_origin
删除了大量remote/upstream_origin/
分支,但现在remote/fork_origin/
命名空间中仍存在相同的分支。
是否有标准的git命令来处理这个问题?我想远离在远程存储库上进行批量删除的复杂bash脚本。
更新:
根据建议,我尝试使用远程修剪命令:
git remote prune fork_origin
然而,它没有效果。经过进一步调查,这似乎只适用于“陈旧”的分支机构,但是当我运行时:
git remote show fork_origin
它表明所有分支仍然被“跟踪”。因此,git remote prune
命令没有任何陈旧的删除是有道理的。有没有办法强制远程仓库(fork_origin
)更新相对于upstream_origin
的分支状态?
答案 0 :(得分:2)
如果要删除遥控器上的分支,请使用以下命令:
git remote prune fork_origin
但在此之前,请看一下这个帖子,看看会出现什么问题:git remote prune – didn't show as many pruned branches as I expected
答案 1 :(得分:0)
没有一个git命令,但你需要;
fork_origin
remotes/fork_origin/branch
中不再存在的任何remotes/upstream_origin
(由于您的git fetch --prune upstream_origin
git push --delete thoseBranches
答案 2 :(得分:0)
对于Linux和Mac用户,此命令将删除我工作中已在上游删除的所有分支。
git branch -a | grep origin | awk -F \/ '{print $NF}' > _my_branches.txt; git branch -a | grep upstream | awk -F \/ '{print $NF}' > _upstream_branches.txt; for deleted_branch_name in `comm -23 _my_branches.txt _upstream_branches.txt`; do git push origin :$deleted_branch_name; done
如果您更喜欢步骤而不是一个长命令:
# Find the branches in my fork
git branch -a | grep origin | awk -F \/ '{print $NF}' > _my_branches.txt;
# Find the branches still in upstream
git branch -a | grep upstream | awk -F \/ '{print $NF}' > _upstream_branches.txt;
# See only the ones that are still in my fork with the comm command
# And only for those branches issue a git command to prunbe them from my fork.
for deleted_branch_name in `comm -23 _my_branches.txt _upstream_branches.txt`; do git push origin :$deleted_branch_name; done