リポジトリのすべてのコンテンツを他の既存のリポジトリのディレクトリに転送する

リポジトリのすべてのコンテンツを他の既存のリポジトリのディレクトリに転送する

GitHubリポジトリ(X)があり、そのファイルをmv ${HOME}/x/* ${HOME}/y/xLinuxファイルツリーの通常のファイルと同じように、他の既存のGitHubリポジトリ(Y)のディレクトリに移動したいと思います。

  • この特別なケースでは、ファイルのGitレコードは気にせず、ファイル自体だけが欲しいです。
  • 現在、GitHubは、最初のリポジトリのすべてのファイルを含むzipファイルを作成して2番目のリポジトリにアップロードする場合、オプションを提供しません。タブレットそのディレクトリに入れてください

リポジトリ内のすべてのファイルを他の既存のリポジトリのディレクトリに移動するにはどうすればよいですか?

ベストアンサー1

組み込み概念なし移動するリポジトリ間のファイル。あなたはできますコピー必要に応じて、古いリポジトリから個別に削除できます。

masterブランチからブランチにhttps://github.com/roiko/xファイルを移動し、そのディレクトリの下のファイルを移動するとします。mainhttps://github.com/roiko/ysubdir

ファイルを移動して履歴を保持する方法は次のとおりです。履歴は、ファイルがルートディレクトリにあるものとして記録し、ルートディレクトリに移動してsubdir「インポートされました」。常にダウン状態でファイルを記録することも可能ですsubdirが、追加のツールが必要です。警告:テストされていないコードです。

  1. xとyの両方をリモコンとして使用できる作業コピーを作成します。

    git clone https://github.com/roiko/y
    cd y
    git remote add x https://github.com/roiko/x
    git fetch x
    
  2. ファイルを古いリポジトリからサブディレクトリに移動します。私はそれがsubdirにまだ存在していないと仮定しますxx-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

  3. 移動したファイルをにインポートしますy。これは、コンテンツを操作するためのローカルブランチを作成しyx-move前のステップで作成したブランチをマージすることを意味します。

    git checkout -b main y/main
    git merge x-move
    git commit -m 'Import files from roiko/x under subdir'
    
  4. 結果を導きます。

    git push origin
    
  5. (オプション)xリポジトリを削除します。masterこれで、そのポイントのすべてのコンテンツと履歴が文書化されますが、y他のポイント、問題などは文書化されません。

おすすめ記事