我在 Github.com 上删除了一堆合并分支,我执行了 git pull,但我的所有分支仍然显示。
于是我跑了..
git remote prune origin
Run Code Online (Sandbox Code Playgroud)
它表明分支在输出中被修剪。
但是,当我运行时,所有已删除的分支都会显示出来
git branch
Run Code Online (Sandbox Code Playgroud)
我想我做了一些与我预期不同的事情?我做了什么?如何从本地删除已从 GitHub 删除的分支?
在这篇文章中: git remote prune origin 不会删除本地分支,即使其上游远程分支被删除
它提到了同样的问题,但我不明白他们的意思,当他们说它会从本地删除陈旧的远程分支时。
它不应该删除它们。
\n\n你的本地分支\xe2\x80\x94实际上应该被称为“你的分支”\xe2\x80\x94是你的。在这种情况下,只有您的远程跟踪名称origin/*不是您的。1 因此,如果之前origin有一个分支命名xyzzy,但现在不再存在,git fetch --prune origin或者git remote prune origin删除您的分支origin/xyzzy以匹配origin缺少的xyzzy- 。
它不会触及你的树枝,那是你的。如果您确定它们现在可以删除,则必须自行删除它们。人们编写了脚本来执行此操作,但据说脚本往往很愚蠢:xyzzy 即使您在合并之前忘记推送了提交,或者打算移动到另一个分支,它们通常也会删除您的提交,一旦xyzzy删除了您的分支,它就会\'往往为时已晚。所以要小心这样的脚本。
(如果这些命令有一个选项告诉他们: 如果我有一个本地分支xyzzy指向与 相同的提交origin/xyzzy,并且您要删除origin/xyzzy,也删除我的本地分支xyzzy。此外,如果我有,xyzzy但是不符合我的,抱怨并停止,这样我就可以弄清楚该怎么办。origin/xyzzyxyzzy 但他们没有这样的选择。)
1从技术上讲,这些也属于您。只是你的 Git 设置为这样,当你的 Git 调用位于 \xe2\x80\x94 的 Git origin\xe2\x80\x94 并从中获取分支名称和哈希 ID 时,你的 Git 会用它们的覆盖你自己的Gitorigin/master更新master。因此,虽然origin/master是 Git 存储库的“名称到哈希 ID”数据库中的名称,但它不是您通常可以自己控制的名称。您只需让您的 Git 镜像他们的 Git,然后他们master就成为您的origin/master.
或者,简而言之:您的 Gitorigin/master是您的 Git 记住其 Git 的方式master。所以这有点像他们的。
| 归档时间: |
|
| 查看次数: |
3698 次 |
| 最近记录: |