基本的な質問:Gitリポジトリを複製元のOriginから切り離すにはどうすればいいですか?
git branch -a
は以下を表示します。
* master
remotes/Origin/HEAD -> Origin/master
そして私はOriginに関する全ての知識とそれに関連する改訂を削除したいと思います。
より長い質問:私は既存のSubversionリポジトリを取り、そこからいくつかの小さいgitリポジトリを作りたいです。新しいgitリポジトリにはそれぞれ、関連するブランチだけの完全な履歴があるはずです。次のようにして、レポを希望のサブツリーに整理することができます。
git filter-branch --subdirectory-filter path/to/subtree HEAD
しかし、結果のリポジトリには、まだOrigin/masterブランチの下にある破棄されたサブツリーのすべてのリビジョンが含まれています。
最初にSubversionリポジトリの適切なサブツリーをクローンするためにgit-svnに-Tフラグを使うことができることを私は知っています。それが後でgitリポジトリのコピーでgit filter-branch --subdirectory-filter
の複数のインスタンス化を実行するよりも効率的かどうかはわかりませんが、いずれにしてもOriginとのリンクを解除したいのです。
かなり簡単です:
git remote rm Origin
filter-branch
質問に関しては - あなたのfilter branchコマンドに--Prune-empty
を追加するだけで、結果として得られるリポジトリに実際には変更を含まないリビジョンは削除されます。
git filter-branch --Prune-empty --subdirectory-filter path/to/subtree HEAD