我有很多Git分支.如何删除已合并的分支?是否有一种简单的方法可以删除它们而不是逐个删除它们?
是否有一种简单的方法可以删除远程等效不再存在的所有跟踪分支?
例:
分支机构(本地和远程)
在本地,我只有一个主分支.现在我需要处理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 branch --all显示所有远程和本地分支.什么时候git刷新这个列表?在拉/推?以及如何刷新它git branch --all?
非常感谢你们!
问题:我想要一种删除没有遥控器的所有本地分支的方法.很容易将分支的名称输入到a中git branch -D {branch_name},但我如何首先获得该列表?
例如:
我创建了一个没有远程的新分支:
$ git co -b no_upstream
Run Code Online (Sandbox Code Playgroud)
我列出了所有的分支,只有一个有远程
$ git branch -a
master
* no_upstream
remotes/origin/HEAD -> origin/master
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
我可以运行什么命令来获得no_upstream答案?
我可以跑git rev-parse --abbrev-ref --symbolic-full-name @{u},这将表明它没有遥控器:
$ git rev-parse --abbrev-ref --symbolic-full-name @{u}
error: No upstream configured for branch 'no_upstream'
error: No upstream configured for branch 'no_upstream'
fatal: ambiguous argument '@{u}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] …Run Code Online (Sandbox Code Playgroud) 我需要一个单行删除文本文件的任何行上的前五个字符.我怎么能用sed做到这一点?
有一次,我认为git fetch origin --prune删除了服务器上不再存在的本地分支.不知何故,这不是我目前的经历.
我运行了这个命令,并没有删除本地分支.目前尚未检出.我跑去git branch -vv检查这个信息,我明白了
feature/MyGreatFeature f30efc7 [origin/feature/MyGreatFeature: gone]
Run Code Online (Sandbox Code Playgroud)
所以似乎知道它已经消失了.为什么不删除我的本地分支?
运行 git version 2.7.4 (Apple Git-66)
Visual Studio继续显示我已经拉过的任何分支,即使在删除了该分支后(我没有将它作为选定的分支).
git fetch --all --prune"不会删除它们.git configremote.origin.prune true"(此处建议)不会删除它们.如何从系统中删除已删除的分支?
更新:我想要一种方法来确定哪些分支已经消失并删除它们.如果我们专门选择它们,那么迟早有人会错误地删除正在使用的分支.
我使用IntelliJ(2016.1.3)和GIT集成插件(8.1).在我使用IntelliJ期间,我检查了多个分支.现在这些分支从GIT中删除(在每次拉取请求之后我们删除它们).
从现在开始,我检出的每个分支都出现在我的GIT视图中,来自Intellij(由VCS> Git> Branches ...),见下:
有一种方法可以删除它们:一个接一个地做!但如果有很多分支(比方说一百......),它肯定会变得单调乏味......
问题是: 您是否知道在IntelliJ中是否有一种简单的方法可以从此视图中删除所有孤立本地分支?
谢谢 :)
编辑:我找到了一种方法来删除它们,但在另一个工具:"Git Gui".当您从那里删除它时,它也会在IntelliJ中删除.您可以一次删除多个分支.
我一直在尝试找到一种方法来删除没有上游分支的本地 git 分支,但链接问题中的答案都不适合我。看来都是靠git branch -vv输出gone],但它对我来说并没有这样做,我不明白为什么。
例如,运行后get fetch --prune,显示没有标签的git branch -vv分支。rsg/revert[gone]
rsg/revert af2c4ac81e Remove temporary debug logging
Run Code Online (Sandbox Code Playgroud)
但是没有对应的origin/rsg/revert分支(我已经在Github上删除了)。有谁知道为什么这不起作用?
编辑:我在 Mac 上使用 git 2.15.0。我以前从未遇到过问题。
我知道如何使用本地删除分支
git branch -d <branch_name>
以及如何使用本地和远程删除
git push origin --delete <branch_name>
我最近也学习了如何修剪过时的分支,只有这样做时,我才能在运行此命令时看到远程分支列表中反映的更改
git branch -r
但每当我运行此命令时,分支列表似乎仍然显示所有分支
git branch
是否有一个命令可以同步远程的更改以反映在本地分支列表中,这样当我删除 github 上的分支时,我可以提取所有分支更改的更新,即哪些分支已被删除,哪些仍然保留,进入我的本地环境?