[解決済み] 多くのサブディレクトリを新しい別の Git リポジトリに切り離す
質問
この質問は サブディレクトリを別の Git リポジトリに切り離す
1つのサブディレクトリをデタッチするのではなく、2つ以上のサブディレクトリをデタッチしたいと思います。例えば、私の現在のディレクトリツリーは以下のようなものです。
/apps
/AAA
/BBB
/CCC
/libs
/XXX
/YYY
/ZZZ
そして、代わりにこうしてほしい。
/apps
/AAA
/libs
/XXX
は
--subdirectory-filter
の引数は
git filter-branch
は、初回実行時に指定されたディレクトリ以外を削除してしまうので、うまくいきません。私は
--index-filter
の引数を不要なファイルすべてに指定すれば(面倒ではありますが)うまくいくのですが、複数回実行してみると、次のようなメッセージが表示されます。
Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f
何かアイデアはありますか?TIA
解決方法は?
試行錯誤の結果、自分自身の質問に答えています。
の組み合わせで何とかなりました。
git subtree
と
git-stitch-repo
. これらの指示は基づいています。
- gitサブツリーでプロジェクト間のコードを共有する-。 http://psionides.jogger.pl/2010/02/04/sharing-code-between-projects-with-git-subtree/
- 仕事に最適なツール:git-stitch-repo - 。 http://ifup.org/2009/02/07/the-right-tool-for-the-job-git-stitch-repo/
まず、残しておきたいディレクトリをそれぞれ別のリポジトリに抜き出しました。
cd origRepo
git subtree split -P apps/AAA -b aaa
git subtree split -P libs/XXX -b xxx
cd ..
mkdir aaaRepo
cd aaaRepo
git init
git fetch ../origRepo aaa
git checkout -b master FETCH_HEAD
cd ..
mkdir xxxRepo
cd xxxRepo
git init
git fetch ../origRepo xxx
git checkout -b master FETCH_HEAD
そして、新しい空のリポジトリを作成し、そこに最後の2つをインポート/ステッチしました。
cd ..
mkdir newRepo
cd newRepo
git init
git-stitch-repo ../aaaRepo:apps/AAA ../xxxRepo:libs/XXX | git fast-import
これで2つのブランチが作成されます。
master-A
と
master-B
で、それぞれ縫合されたレポのうちの1つの内容を保持しています。それらを結合してクリーンアップするために
git checkout master-A
git pull . master-B
git checkout master
git branch -d master-A
git branch -d master-B
さて、この現象がいつどのように起こるのかよくわからないのですが、最初の
checkout
と
pull
を実行すると、そのコードは魔法のように master ブランチにマージされます (ここで何が起こっているのか、何かヒントがあれば幸いです!)。
すべてが予想通りに動いているように見えますが、もし私が
newRepo
コミット履歴を見ると、チェンジセットが両方の
apps/AAA
と
libs/XXX
. 重複を削除する方法があれば、完璧なのですが。
関連
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] ローカルの Git リポジトリが元々クローンされた URL を特定するにはどうすればよいですか。
-
[解決済み] Git リポジトリを特定のフォルダにクローンする方法は?
-
[解決済み] サブディレクトリを別のGitリポジトリに切り離す(移動する)。
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】Git リポジトリに空のディレクトリを追加するには?
-
[解決済み】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 commit」は私の変更を保存しないのですか?
-
[解決済み] [Solved] 作業ツリーのディレクトリ 'example.com' を作成できませんでした。パーミッションが拒否されました
-
git commit リモートエラー [rejected] master -> master (フェッチファースト)
-
[解決済み] LFはgitでCRLFに置き換えられます - それは何ですか、そしてそれは重要ですか?[重複]。
-
[解決済み] GIT_DISCOVERY_ACROSS_FILESYSTEM が設定されていない。
-
[解決済み] 短いGitバージョンのハッシュを取得する
-
[解決済み] GitのFETCH_HEADとはどういう意味ですか?
-
[解決済み] ssh-keygen' は内部コマンドまたは外部コマンドとして認識されません。
-
[解決済み] Gitのエラー「object file ... is empty」はどうすれば直せますか?
-
[解決済み] サブディレクトリを別のGitリポジトリに切り離す(移動する)。