GitHubリポジトリ(X)があり、そのファイルをmv ${HOME}/x/* ${HOME}/y/x
Linuxファイルツリーの通常のファイルと同じように、他の既存のGitHubリポジトリ(Y)のディレクトリに移動したいと思います。
- この特別なケースでは、ファイルのGitレコードは気にせず、ファイル自体だけが欲しいです。
- 現在、GitHubは、最初のリポジトリのすべてのファイルを含むzipファイルを作成して2番目のリポジトリにアップロードする場合、オプションを提供しません。タブレットそのディレクトリに入れてください
リポジトリ内のすべてのファイルを他の既存のリポジトリのディレクトリに移動するにはどうすればよいですか?
答え1
組み込み概念なし移動するリポジトリ間のファイル。あなたはできますコピー必要に応じて、古いリポジトリから個別に削除できます。
master
ブランチからブランチにhttps://github.com/roiko/x
ファイルを移動し、そのディレクトリの下のファイルを移動するとします。main
https://github.com/roiko/y
subdir
ファイルを移動して履歴を保持する方法は次のとおりです。履歴は、ファイルがルートディレクトリにあるものとして記録し、ルートディレクトリに移動してsubdir
「インポートされました」。常にダウン状態でファイルを記録することも可能ですsubdir
が、追加のツールが必要です。警告:テストされていないコードです。
xとyの両方をリモコンとして使用できる作業コピーを作成します。
git clone https://github.com/roiko/y cd y git remote add x https://github.com/roiko/x git fetch x
ファイルを古いリポジトリからサブディレクトリに移動します。私はそれがsubdirにまだ存在していないと仮定します
x
。x-move
移行を実行するために一時ローカルブランチを作成します。x/master
移動コミットから始めて追加します。git checkout -b x-move x/master mkdir subdir shopt -s extglob dotglob git mv -- !(.git|subdir) subdir/ git commit -m 'Move everything to subdir/'
この
shopt
コマンドはbashで動作します。 zshではなくsetopt kshglob dotglob
。移動したファイルをにインポートします
y
。これは、コンテンツを操作するためのローカルブランチを作成しy
、x-move
前のステップで作成したブランチをマージすることを意味します。git checkout -b main y/main git merge x-move git commit -m 'Import files from roiko/x under subdir'
結果を導きます。
git push origin
(オプション)
x
リポジトリを削除します。master
これで、そのポイントのすべてのコンテンツと履歴が文書化されますが、y
他のポイント、問題などは文書化されません。
答え2
アーカイブされた記録に興味がない場合は、x
次に進むことができますy
。
2つのプロジェクトの複製
git clone https://github.com/roiko/x git clone https://github.com/roiko/y
x
すべてコピーy
cp -a x y/
コピーされたすべてのデータを含むコミットの作成
cd y git add x git commit -m "Import files from roiko/x"
プッシュアップデート
y
git push