Gitでプロジェクトを管理していると、時として既存のコミット履歴を一切引き継がない、完全に独立したブランチを作成したい場面がある。例えば、ソースコードとは別にドキュメントやビルド成果物だけを管理するブランチなどがそれに該当する。
本記事では、git checkout --orphan
コマンドを用いて、このような「まっさらな」ブランチを作成する手順を技術的に解説する。
`git checkout --orphan` とは何か?
git checkout --orphan <branch-name>
は、指定した名前の新しいブランチを作成し、そこに切り替えるコマンドである。通常の git checkout -b
との決定的な違いは、親コミットを持たない、つまりコミット履歴が完全に空のブランチを作成する点にある。このブランチは、リポジトリ内のどのコミットとも繋がっていないため、「孤児(orphan)」と呼ばれる。
ただし、このコマンドを実行した直後、作業ディレクトリとインデックスには、切り替え元のブランチのファイルがそのまま残存している。そのため、完全にクリーンな状態から始めるには、これらのファイルを一度リセットする追加の操作が必要である。
具体的な手順
ステップ1: orphanブランチの作成
まず、履歴のない新しいブランチを作成する。ここでは例として gh-pages
というブランチ名を使用する。
git checkout --orphan gh-pages
このコマンドにより、gh-pages
ブランチに切り替わる。この時点ではコミットはまだ存在しない。
ステップ2: インデックスのクリア
切り替え元ブランチのファイルがインデックス(ステージングエリア)に残っているため、これらをすべて削除し、作業ディレクトリをクリーンな状態にする。
git rm -rf .
-r
は再帰的、-f
は強制実行を意味する。これにより、インデックスからすべてのファイルが削除される。
ステップ3: 最初のコミットの作成
ブランチが完全に空になったので、新しいファイルを追加して最初のコミットを作成する。これがこのブランチの歴史の起点となる。
# 新しいファイルを作成・追加
echo "My GitHub Pages site" > index.html
git add index.html
# 最初のコミットを実行
git commit -m "Initial commit for gh-pages"
ユースケース
このテクニックが特に有効なシナリオは以下の通りである。
- GitHub Pages (`gh-pages`) ブランチ: ソースコードとは別に、ビルドされた静的サイトのファイルだけをクリーンな状態で管理する場合。
- ドキュメント管理: ソースコードの履歴とは完全に切り離して、ドキュTキュメントの変更履歴だけを独立して管理したい場合。
- 成果物のデプロイ: ビルド成果物やバイナリなど、ソースリポジトリに含めたくないがバージョン管理はしたいものを格納するブランチとして利用。
- 完全な新規実験: 既存のコードベースに一切影響されず、ゼロから実験的なコードを書き始めたい場合。
まとめ
git checkout --orphan
は、特定の目的のためにコミット履歴を分離したい場合に極めて有効な手段である。手順自体はシンプルだが、コマンド実行後のインデックスの状態を正しく理解し、適切にクリアすることが重要である。
このテクニックを習得することで、より柔軟でクリーンなGitリポジトリの管理が可能となるだろう。