XXXというフォルダーに Git リポジトリがあり、 YYYという 2 番目の Git リポジトリがあります。
XXXリポジトリをZZZというサブディレクトリとしてYYYリポジトリにインポートし、XXXのすべての変更履歴をYYYに追加したいと思います。
以前のフォルダ構造:
├── XXX
│ ├── .git
│ └── (project files)
└── YYY
├── .git
└── (project files)
後のフォルダ構造:
YYY
├── .git <-- This now contains the change history from XXX
├── ZZZ <-- This was originally XXX
│ └── (project files)
└── (project files)
これは実行できますか、それともサブモジュールを使用する必要がありますか?
ベストアンサー1
おそらく最も簡単な方法は、XXXの内容をYYYのブランチにプルし、それをマスターにマージすることです。
YYY年:
git remote add other /path/to/XXX
git fetch other
git checkout -b ZZZ other/master
mkdir ZZZ
git mv stuff ZZZ/stuff # repeat as necessary for each file/dir
git commit -m "Moved stuff to ZZZ"
git checkout master
git merge ZZZ --allow-unrelated-histories # should add ZZZ/ to master
git commit
git remote rm other
git branch -d ZZZ # to get rid of the extra branch before pushing
git push # if you have a remote, that is
実際に私のリポジトリでこれを試してみたところ、うまくいきました。ヨルグの答え他のリポジトリを引き続き使用することはできませんが、いずれにしてもそのように指定していないと思います。
注: これはもともと 2009 年に書かれたものですが、git では以下の回答で説明されているサブツリー マージが追加されました。もちろんこの方法もまだ機能しますが、おそらく今日ではその方法を使用するでしょう。