是否有一种简单的方法可以删除远程等效不再存在的所有跟踪分支?
例:
分支机构(本地和远程)
在本地,我只有一个主分支.现在我需要处理bug-fix-a,所以我检查它,处理它,并将更改推送到远程.接下来我用bug-fix-b做同样的事情.
分支机构(本地和远程)
现在我有本地分支机构master,bug-fix-a,bug-fix-b.Master分支维护者将我的更改合并到master中并删除他已经合并的所有分支.
那么现在的状态是:
分支机构(本地和远程)
现在我想调用一些命令删除分支(在本例中为bug-fix-a,bug-fix-b),这些分支不再在远程存储库中表示.
它会像现有的命令git remote prune origin
,但更像是git local prune origin
.
使用git 1.6.4.2,当我这样做时,git pull
我收到此错误:
error: unable to resolve reference refs/remotes/origin/LT558-optimize-sql: No such file or directory
From git+ssh://remoteserver/~/misk5
! [new branch] LT558-optimize-sql -> origin/LT558-optimize-sql (unable to update local ref)
error: unable to resolve reference refs/remotes/origin/split-css: No such file or directory
! [new branch] split-css -> origin/split-css (unable to update local ref)
Run Code Online (Sandbox Code Playgroud)
我试过git remote prune origin
,但没有用.
让我们说coolbranch
我的存储库中有一个分支.
现在,我决定删除它(远程和本地):
git push origin :coolbranch
git branch -D coolbranch
Run Code Online (Sandbox Code Playgroud)
大!现在分支真的被删除了.
但是当我跑步的时候
git branch -a
Run Code Online (Sandbox Code Playgroud)
我还是得到:
remotes/origin/coolbranch
Run Code Online (Sandbox Code Playgroud)
需要注意的是,当我克隆一个新的存储库时,一切都很好,git branch -a
并没有显示分支.
我想知道 - 有没有办法从branch -a
列表中删除分支而不克隆新实例?
我遵循一个开发过程,为每个新功能或故事卡创建一个新的本地分支.完成后,我将分支合并为master,然后推送.
由于懒惰或健忘的结合,随着时间推移会发生的事情是,我最终得到了大量的本地分支,其中一些(例如尖峰)可能没有被合并.
我知道如何列出我所有的本地分支,我知道如何删除一个分支,但我想知道是否有一个git命令允许我删除所有我的本地分支?
以下是该git branch --merged
命令的输出.
user@machine:~/projects/application[master]$ git branch --merged
STORY-123-Short-Description
STORY-456-Another-Description
STORY-789-Blah-Blah
* master
Run Code Online (Sandbox Code Playgroud)
所有删除列出的分支的尝试grep -v \*
(根据下面的答案)都会导致错误:
error: branch 'STORY-123-Short-Description' not found.
error: branch 'STORY-456-Another-Description' not found.
error: branch 'STORY-789-Blah-Blah' not found.
Run Code Online (Sandbox Code Playgroud)
我正在使用:
git 1.7.4.1
ubuntu 10.04
GNU bash,版本4.1.5(1) -
发布GNU grep 2.5.4
在VSCode中,在我执行拉取请求并删除GitHub上的分支后,该分支仍然显示在Visual Studio代码中.如果我选择分支,它会按预期给出错误.
如何从VSCode中删除这些现已删除的分支 - 我可以自动执行吗?
列出并删除多个分支
与此同时__CODE__
,这是我用于的另一个分支删除相关命令__CODE__
:
示例 - 列出以.开头的所有分支 __CODE__
__PRE__
列表删除.注意:更换__CODE__
与__CODE__
删除没有警告
__PRE__
我试图从github中提取更改时遇到一个奇怪的"无法锁定引用"错误.我已经尝试了git gc,并四处寻找类似的错误但无法找到解决方案.
> git pull
error: cannot lock ref 'refs/tags/v2.8': 'refs/tags' exists; cannot create 'refs/tags/v2.8'
From github.com:k3it/qsorder
! [new tag] v2.8 -> v2.8 (unable to update local ref)
error: cannot lock ref 'refs/tags/v2.9': 'refs/tags' exists; cannot create 'refs/tags/v2.9'
! [new tag] v2.9 -> v2.9 (unable to update local ref)
Run Code Online (Sandbox Code Playgroud) 这是一个常见的用例,我克隆一个存储库,签出一个分支,做一些代码更改,进行多次提交,然后当它稳定时,我做一个推送到远程,最终分支被合并和删除.我离开了一个上游的当地分支机构.
我一直在寻找一种删除所有这些分支的安全方法.从描述来看,似乎git remote prune起源正是这样做的.但它似乎并不适合我.
看到以下行为,分支encrdb_init
已被删除remote
但git remote prune origin
命令似乎没有修剪它.我不知道为什么.
$ git branch
bugfix/encrdb_init
* master
$
$ git remote prune origin
$
$ git checkout bugfix/encrdb_init
Switched to branch 'bugfix/encrdb_init'
Your branch is based on 'origin/bugfix/encrdb_init', but the upstream
is gone.
(use "git branch --unset-upstream" to fixup)
$
$ git branch
bugfix/encrdb_init <<< shouldn't this have been pruned?
* master
Run Code Online (Sandbox Code Playgroud)
供参考添加输出 git remote show origin
$ git remote show origin
* remote origin
Fetch URL: …
Run Code Online (Sandbox Code Playgroud) 我有一个本地和远程Git存储库.
在我的本地存储库中,我创建并切换到新分支: git checkout -b feature/niceNewFeature
我做我的编码git add .
,git commit
和git push
我的feature/niceNewFeature
分支远程存储库(如GitHub上).
在此之后,我创建了一个GitHub Pull Request来合并feature/niceNewFeature
分支master
- 在审查代码之后,我将这样做.
由于feature/niceNewFeature
现在合并到master
,我将在GitHub上删除它.
但是,在我的本地存储库中,如果执行git branch
命令,仍会列出feature/niceNewFeature分支.
如何feature/niceNewFeature
从本地存储库中删除分支,因为它已经与master
远程存储库合并和删除?
请注意:我首先看了一下这个问题,希望它能回答我的问题,但我认为我的略有不同!
有人告诉我,在git remote update origin --prune
本地运行会强制我的本地存储库与原始存储库具有完全相同的分支。但是,我可以找到大量有关使用 的信息/文档git remote prune origin
,但找不到git remote update origin --prune
...
我对这个命令的理解正确吗?如果不是,我怎么被误导了?如果我是对的,那么如果我有尚未远程推送的本地功能分支会发生什么?如果我有一个变化的分支,会发生什么做远程现有/原点,但有我没有推开这些变化了吗?
提前致谢!