リークされたCIA開発者ドキュメントに埋もれていた便利なGitワンライナーを見つけました。

2026/02/20 23:03

リークされたCIA開発者ドキュメントに埋もれていた便利なGitワンライナーを見つけました。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

(欠落している詳細を組み込む)

Summary

投稿では、開発の主ラインにすでにマージされた古いローカルGitブランチを迅速に削除し、リポジトリを整理整頓し、ナビゲーションを容易にする方法が説明されています。
まず

git branch --merged
を使ってすべてのマージ済みブランチを一覧表示します。その後、現在のブランチ(
*
)、主な安定ブランチである
main
(または
master
)と
develop
を除外し、残りのブランチを安全に削除します:

git branch --merged origin/main | grep -vE "^\s*(\*|main|develop)" | xargs -n 1 git branch -d

この更新されたコマンドは、従来の

master
の代わりに
main
を使用するプロジェクトにも対応しています。
著者はまた、このロジックをGitエイリアスとして保存しています:

alias ciaclean='git branch --merged origin/main | grep -vE "^\s*(\*|main|develop)" | xargs -n 1 git branch -d'

デプロイ後に

main
ブランチから
ciaclean
を実行すると、数十の不要なブランチをほんの数個に削減でき、今後のマージ作業がスムーズになり、開発者の混乱も減少します。
このテクニックは、2017年に公開されたWikiLeaks Vault7リリースに含まれていたCIA内部のGitヒントから着想を得ました

本文

Vault7 の Git ヒント – スタイルの古いブランチを整理する

2017 年、WikiLeaks は CIA が保有していたハッキングツールと内部文書の大規模なコレクション「Vault7」を公開しました。
その中にある実装例の一つが、Git に関する実用的なヒントをまとめた開発者向けドキュメントでした。
私の

~/.zshrc
にはこのヒントを入れているものがあります。


問題点

ローカル Git リポジトリでは、不要になった機能ブランチやホットフィックス、実験用ブランチなどが次第に増えていきます。
時間が経つにつれ

git branch
を実行すると、使われていない名前の山ができてしまいます。

マージ済みのブランチだけを一覧表示するには:

git branch --merged

一つずつ削除しても手間がかかるので、CIA の開発チームは次のようなシンプルな解決策を提案しました。

git branch --merged | grep -v "\*\|master" | xargs -n 1 git branch -d

動作原理

  • git branch --merged

    現在チェックアウトしているブランチにすでにマージ済みのローカルブランチを一覧表示します。
  • grep -v "\*\|master"

    カレントブランチ(
    *
    )と
    master
    を除外し、削除対象から外します。
  • xargs -n 1 git branch -d

    残った各ブランチを順に安全に (
    -d
    はマージされていないブランチは削除しません) 削除します。

更新されたコマンド

現在ほとんどのプロジェクトでは

master
の代わりに
main
が使われています。
また、頻繁に使用される他のブランチも除外するように修正した例を示します。

git branch --merged origin/main | grep -vE "^\s*(\*|main|develop)" | xargs -n 1 git branch -d

このコマンドは、

main
ブランチでデプロイ後に実行すれば、数十個あったブランチが残り数本に減ります。

私はこの操作を Git エイリアスとして保存し、構文を覚える必要がないようにしています。

alias ciaclean='git branch --merged origin/main | grep -vE "^\s*(\*|main|develop)" | xargs -n 1 git branch -d'

リポジトリ内で単に

ciaclean

と実行するだけです。

小さな工夫ですが、毎週数分を節約し、リポジトリをきれいに保つのに役立ちます。


読んでいただきありがとうございます。
最新の考えやプロジェクトについては、こちらでフォローしてください。

同じ日のほかのニュース

一覧に戻る →

2026/02/21 2:58

「Androidをオープンに保つ」

## 日本語訳: F‑Droidは、GoogleのAndroidポリシーの変化についてコメントしながら、新しい **Basic 2.0‑alpha3** ビルドを公開しました。 - **FOSDEM26** でユーザーは、GoogleがAndroidをロックダウンする計画を中止したと聞き安心しましたが、8月の発表ではその計画がまだ有効であることが示されています。 - 記事は、Google の「advanced flow」主張の曖昧さと、Android 16 QPR2/3 や Android 17 Beta 1 の明確なリリース日が設定されていない点を批判しています。 - **バナー警告** は、Google がゲートキーパーになる前に時間がなくなることをユーザーに知らせ、IzzyOnDroid、Obtainium、および他のダウンローダーでも同様のバナーが表示されます。 - 新しい Basic リリースには、更新された翻訳、インストール済みアプリの CSV エクスポート、インストール履歴、ミラー選択器、スクリーンショット防止機能、ツールチップ、新しいオーバーフローメニュー、永続的な並べ替え順序、Material 3 スタイル、およびさまざまなバグ修正が含まれています。 Basic 1.23.x を使用しているユーザーは、このアルファを受け取るために「Allow beta updates」を手動で有効にする必要があります。 - **いくつかのアプリが更新されました**:Buses 1.10、Conversations/Quicksy 2.19.10+、Dolphin Emulator 2512、Image Toolbox 3.6.1(AIツール)、Luanti 5.15.1、Nextcloud ファミリー(Nextcloud 33.0.0、Cookbook 0.27.0、Dev 20260219、Notes 33.0.0、Talk 23.0.0)、ProtonVPN 5.15.70.0(WireGuard のみ)、Offi 14.0、QUIK SMS 4.3.4、および SimpleEmail 1.5.4。 - **5 つのアプリが削除されました**:Chord Shift、OpenAthena™ for Android、Tibetan Keyboard、Tibetan Pad、Tomdroid。 - **新しいアプリが追加されました**:NeoDB You(Material 3/You を採用した NeoDB のネイティブ Android アプリ)。 - 280 件を超えるアプリが更新され、注目すべきものとして Aurora Store 4.8.1、Bando.js Gadgetbridge 0.89.1‑banglejs、DuckDuckGo Privacy Browser 5.266.0、Element X 26.02.0、OpenTracks v4.26.0、Proton Pass 1.37.2 などがあります。 - F‑Droid は読者に RSS フィードの購読、TWIF フォーラムスレッドへの参加、および寄付ページでの寄付を促しています。 この改訂された概要はリストから主要なポイントをすべて保持し、不必要な推測を避け、明確なメインメッセージを提示し、曖昧または混乱する表現を除去しています。

2026/02/21 6:25

Dependabot をオフにします。

## Japanese Translation: ## 要約 DependabotはGoプロジェクトで細かいパッケージフィルタリングが不足しているため、頻繁に無関係なセキュリティアラートを生成します。著者はDependabotを停止し、最新の依存関係に対して`govulncheck`とテストスイートを実行するスケジュール済みGitHub Actionで置き換えることで、ノイズを劇的に減らしながらも実際の脆弱性は検出できることを示しています。 重要な例として、`filippo.io/edwards25519`(v1.1.1)の修正が挙げられます。このパッチはDependabotのデフォルト動作により、関連しないリポジトリ―例えばWycheproof―でも何千件ものPRを生成しました。対照的に、`govulncheck`は静的解析後に脆弱なシンボルが到達不能であると判断し、著者のプロジェクトでは「脆弱性なし」と報告します。 Go Vulnerability Database はモジュール、バージョン、シンボル、CVE参照などの詳細メタデータを提供しており、こうした精密なフィルタリングを可能にしています。著者は毎日実行されるワークフロー(`go get -u -t ./...`)と10:22 UTCに実行される`govulncheck`を組み合わせ、真の脅威に対してのみアラートが上がるようにしています。 CI環境を潜在的なサプライチェーン攻撃から保護するため、ワークフローではgVisorを使用したサンドボックス化ステップ`geomys/sandboxed-step`を採用しています。この手法は、各依存関係のスケジュールではなくプロジェクト自身のリリースサイクルに合わせて依存関係を更新することを推奨し、継続的なバンプなしで早期検出を実現します。 この戦略は、Go Security Team が2020–21年にデータベース品質と静的解析フィルタの改善に焦点を当てたものと一致しており、Geomys のリテーナー契約(Ava Labs、Teleport、Tailscale、Sentry)によって支援されています。著者は他の開発者にも同様のワークフローを採用するよう促し、Bluesky(@filippo.abyssdomain.expert)または Mastodon(@filippo@abyssdomain.expert)でフォローしてもらうことを読者に呼びかけています

2026/02/20 22:51

**Ggml.ai、Hugging Faceと提携しローカルAIの長期的進展を確保** - 軽量機械学習モデルのリーディングプロバイダーであるGgml.aiが、Hugging Faceとパートナーシップを結びました。 - 本協業は、世界中におけるローカルAIソリューションの継続的な開発・展開を確実にすることを目的としています。 - 両社は資源やベストプラクティス、コミュニティサポートを共有し、デバイス上で動作するインテリジェンスのイノベーションを加速させていきます。

## 日本語訳: > ggml.ai の創設者は、AI を真にオープンに保ちつつ、ggml/llama.cpp スタックのメンテナンスに専念するため、Hugging Face に参加します。このパートナーシップはプロジェクトの長期的な持続可能性を保証し、ユーザーと貢献者に新たな機会を提供します。これまでの 3 年間の協力により、コア機能・ユーザーインターフェース・マルチモーダルサポート・GGUF 対応が追加されました。Llama.cpp は多くのコンシューマー ハードウェア上で動作するプライベート AI プロジェクトに不可欠となっており、コミュニティは依然として独自に構成設計を行い、Hugging Face はリソースを提供しつつコードを 100 % オープンソースのまま保ちます。今後、チームはユーザー体験を優先し、ggml/llama.cpp を Hugging Face の Transformers ライブラリに「ワンクリック」で統合し、ローカル推論がクラウドソリューションと競合できるようパッケージングを改善します。これらの取り組みは、使いやすいエッジ推論スタックを構築し、開発者に日常デバイス上でプライベート AI を構築するための安定した基盤を提供するとともに、世界中でオープンソーススーパインテリジェンス エコシステムを拡大することを目的としています。