[解決済み】既存の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は以下の回答で言及されているサブツリーのマージを追加しました。もちろん、この方法は今でも有効ですが、私は今日、おそらくその方法を使うでしょう。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 既存の、プッシュされていないコミットメッセージを修正するには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み] サブディレクトリを別のGitリポジトリに切り離す(移動する)。
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】未マージファイルがあるため、Gitマージができない
-
[gitコミット失敗の解決] 現在のブランチの先端が後ろにあるため、更新が拒否されました。
-
gitコミット発生 ! [リモート拒否] master -> master (pre-receive hook declined) 解決策
-
[解決済み】gpgがデータの署名に失敗した fatal: failed to write commit object [Git 2.10.0].
-
[解決済み] GitHubに空のブランチを作成する
-
[解決済み] SourceTree error:1407742E:SSLルーチン:SSL23_GET_SERVER_HELLO:tlsv1警告プロトコルバージョン
-
[解決済み] .gitignore と "以下の追跡されていない作業ツリーファイルはチェックアウトによって上書きされるでしょう"
-
[解決済み] GitHubです。パーミッションが拒否されました (公開鍵)。
-
[解決済み] 2 つの Git リポジトリをマージする方法は?
-
[解決済み】ファイル履歴を壊さずに2つのGitリポジトリをマージする