是否有一种简单的方法可以删除远程等效不再存在的所有跟踪分支?
例:
分支机构(本地和远程)
在本地,我只有一个主分支.现在我需要处理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 -a
显示远程和本地分支.
git branch -r
显示远程分支.
有没有办法列出当地的分支机构?
我知道我可以这样做git branch --all
,这向我展示了本地和远程分支,但是向我展示它们之间的关系并没有那么有用.
如何以显示哪个本地分支正在跟踪哪个远程的方式列出分支?
随着git remote prune origin
我可以删除本地分支机构不在遥控器上的任何更多.
但我还想删除从这些远程分支创建的本地分支(检查它们是否未合并会很好).
我怎样才能做到这一点?
我只是使用重命名我的本地分支
git branch -m oldname newname
Run Code Online (Sandbox Code Playgroud)
但这只会重命名分支的本地版本.如何在github中重命名一个?
我希望我的本地和远程存储库在分支方面始终保持同步.
在GitHub上进行Pull Request审核后,我合并并删除了我的分支(远程).我如何在本地存储库中获取此信息并让Git删除我的本地版本的分支?
在github项目中,你可以进入/ branches页面和一个漂亮的图形,每个分支显示每个分支相对于主分支的落后多远.
是否有一个类似的命令行工具?什么东西适用于遥控器?例如,
git branch -v -v
Run Code Online (Sandbox Code Playgroud)
接近我正在寻找的,但只适用于本地分支机构.
如何列出出现(按照.git/config
)跟踪不再存在的远程分支的任何本地分支?在这种情况下,远程分支机构在GitHub上,但我怀疑它们的位置没有相关性.
例如:
a
,b
,c
和d
.a
正在跟踪origin/a
并c
正在跟踪origin/c
.b
并且d
不跟踪远程分支.origin/a
已被合并回主服务器并在存储库清理期间被删除; 我不再需要保留本地分支a
.a
签出到工作树,则运行git fetch
或git pull
导致错误Your configuration specifies to merge with the ref 'a' from the remote, but no such ref was fetched.
如何生成仅包含a
其他本地分支的列表,这些分支似乎跟踪不再存在的远程分支?
我想识别这些,以便我可以删除我不再需要的过时的本地分支.
该列表不应包括本地分支b
或d
不跟踪远程分支,也不c
应该是跟踪origin/c
,这仍然存在.
它们在OSX下是否与xargs -r
Linux相同?如果没有数据,我正试图找到一种方法来中断管道.
例如,假设您执行以下操作:
touch test
cat test | xargs -r echo "content: "
Run Code Online (Sandbox Code Playgroud)
这不会产生任何结果,因为xargs会中断管道.
是否有一些隐藏的 xargs选项或其他东西在OSX下实现相同的结果?
在我们团队的存储库中,我们通过提交PR进行工作,并且仅使用github的squash&merge功能将它们合并为master。对我来说,问题在于我再也看不到分支与合并为master git branch --merged
,因为这将不会显示已被压缩和合并的分支。我的当地分支机构堆积如山,很难一一查看,看看可以删除哪些分支。还有另一种列出它们的方法吗?
git ×9
github ×3
branch ×2
git-branch ×2
bash ×1
macos ×1
pull ×1
rename ×1
repository ×1
shell ×1