LoginSignup
7
7

More than 5 years have passed since last update.

ゆるふわgit2 ~「とりあえずリポジトリ」から、必要なフォルダだけ別リポジトリに抽出~

Posted at

対象

  • 前回からちょっとステップアップしたい
  • なんだかちょっとgitに慣れてきた気がする
  • フォルダで管理していたファイルたちを別リポジトリとして抽出したい

という人が対象です

目的

とりあえずで適当にコミットしていたリポジトリから特定のフォルダを、コミット履歴そのままに別リポジトリに切り分ける

注意事項

  • 元となるリポジトリの規模によっては時間がかかるので、時間に余裕があるときにやるのがいいと思います。
  • 元となるリポジトリは一切変更されませんが、最初は念のためcloneしたリポジトリでの実行をおすすめします

手順

gitでまるまる管理してる /c/repos/Toriaezu/ フォルダ(抽出元リポジトリ)から、
sourceフォルダ(/c/repos/Toriaezu/source/)を、
/c/repos/source/ レポジトリへ抽出する場合
※パス形式は Windows版のSource Treeについてくるシェル(MINGW)の形式になっているので適宜読み変えてください

  • まっさらなbareリポジトリを準備する。(抽出先となるリポジトリ)
    • git init --bare を /c/repos/source/ で実行。
  • /c/repos/Toriaezu/ で下記のコマンドを実行する
    • git subtree push /c/repos/source/ master --prefix source/
    • (git subtree push 抽出先リポジトリ 抽出元リポジトリのpushしたいブランチ --prefix 抽出するフォルダ)
  • /c/repos/source/ をcloneし抽出されていることを確認

まとめ

  • とりあえず一つのフォルダをまるまるgitで管理していても、あとから必要なフォルダだけ抽出するのはびっくりするほど簡単
  • もしかしたらあとで抽出したくなるかも、と思ったら、フォルダ構成だけしっかり管理しておけば大丈夫
  • 上記の事さえおさえておけば、もうなにもこわくない。

おまけ

どんなふうに抽出されるのか確認だけしたい人向け

今回この記事の確認のために作成したリポジトリ
抽出元
抽出先

上記のネットワーク
抽出元
抽出先

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7