1. ホーム
  2. ギット

[解決済み】既存のGitリポジトリを別のリポジトリにインポートする方法は?

2022-03-23 20:36:30

質問

というフォルダに、Git リポジトリがあります。 XXX という名前の2番目のGitリポジトリを持っています。 YYY .

をインポートしたい。 XXX リポジトリに YYY という名前のサブディレクトリを作成します。 ZZZ を追加し、すべての 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)

それとも、サブモジュールを使用しなければならないのでしょうか?

どのように解決するのですか?

おそらく、最も簡単な方法は XXX のブランチにある YYY で、それをmasterにマージしてください。

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

実際に私のレポのいくつかで試してみたところ、うまくいきました。とは異なり Jörgの回答 は、他のレポを使い続けることはできませんが、いずれにせよ、あなたはそれを指定しなかったと思います。

注:これが最初に書かれた2009年以降、gitは以下の回答で言及されているサブツリーのマージを追加しました。もちろん、この方法は今でも有効ですが、私は今日、おそらくその方法を使うでしょう。