
2025/12/23 3:52
**Git ブランチをタグとしてアーカイブする方法** 1. アーカイブしたいブランチを特定します。 2. そのブランチの現在のコミットにポイントするタグを作成します: ```bash git tag -a v<version> <branch-name> -m "Archive <branch-name>" ``` 3. タグをリモートリポジトリへプッシュします: ```bash git push origin v<version> ``` 4. 必要に応じて、もとのブランチをローカルとリモートから削除しておきます。 こうすることで、ブランチの状態を軽量で不変な参照として Git 履歴に残すことができます。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Summary
この記事では、現在のブランチまたは指定されたブランチをアーカイブタグ(
archive/<branch>)に変換し、その後元のブランチを削除する Git エイリアス archive-branch を紹介します。エイリアスは即座に実行される Bash 関数として定義されています。
!f() { : git switch; git checkout main && git tag archive/$1 $1 && git branch -D $1; }; f
- 最初に
に切り替える ことで、タグ付けと削除がメインブランチ上で行われます。main - 最初の行
はノーオペレーション(no‑op)であり、このエイリアスを使用しているときに Git のシェル補完が対象ブランチ名を提案するよう強制します。: git switch - タブ補完は、関数が 公式の Git 補完スクリプト に依存しているため機能します。Zsh の組み込み補完では必要なスタイルを指定できません。
macOS で Xcode の Git を使用する場合、以下が必要です:
をサイト関数ディレクトリにリンクします:git-completion.zshln -s /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash \ /usr/local/share/zsh/site-functions/_git
に以下を追加して、Zsh が Git 補完にそのスクリプトを使用するようにします:.zshrcautoload -Uz compinit && compinit zstyle ':completion:*:*:git:*' script /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash
引数が渡されない場合、エイリアスは現在のブランチ(
${1:-$(git branch --show-current)})をデフォルトに設定し、手動でタグ付けや削除を行わずに迅速にアーカイブできます。このアイディアは Reddit のスレッドから始まりました。
このバージョンでは、すべての主要ポイントが明示的にカバーされ、余計な推測を避けつつ、情報を分かりやすいステップごとに提示しています。
本文
スパイシーな Git エイリアス
古いブランチを「アーカイブ」して、タグに変換することでほとんどの Git ツール上では見えにくくなるエイリアスです。
# ~/.gitconfig [alias] archive-branch = "!f() { \ : git switch; \ local git_branch=${1:-$(git branch --show-current)}; \ git co main && \ git tag archive/$git_branch $git_branch && \ git branch -D $git_branch; \ }; f"
動作概要
- エイリアスは 即時実行される Bash 関数 (
) に包まれています。!f() { … }; f - 関数内の最初の行
は実際には実行されません。: git switch
この行は Git に
と同じ補完ロジックを使用させるだけです。git switch
その結果、
と入力するとブランチ名の補完が表示されます。git archive-branch <TAB> - このテクニックには 公式 Git 補完スクリプト が必要です。
Zsh は独自に補完を提供しますが、スタイル指定をサポートしていないため、公式スクリプトを読み込む必要があります。
macOS(Xcode Developer Tools)での設定
sudo mkdir -p /usr/local/share/zsh/site-functions sudo ln -s /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.zsh \ /usr/local/share/zsh/site-functions/_git
~/.zshrc に以下を追加(既にある場合は重複しません):
# ~/.zshrc autoload -Uz compinit && compinit zstyle ':completion:*:*:git:*' script \ /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash
クレジット
このアイデアは Reddit のスレッドから発案されました。