あるgitリポジトリから別のgitリポジトリにフォルダ(およびその中のすべて)をコピーします

RockyMountainHigh

あるgitリポジトリから別のgitリポジトリにフォルダを移動する方法例をいくつか見つけました[これが1つです]ただし、元のリポジトリを破壊するようです(正しく読んでいる場合)。私が必要としているのは、あるリポジトリから別のリポジトリに、履歴付きで、別のリポジトリにフォルダをコピーすることです。次のようなもの:

Repo A:

/myApp/
    /deploy/...
    /src/...
    /test/...
    /bin/...

Repo B:

/myDeploymentCode/
    /projects/
      /myWebService/...
      /myWebsite/...

コピー後、私はそれを次のようにしたいと思います:

Repo A:

/myApp/
    /deploy/...
    /src/...
    /test/...
    /bin/...

Repo B:

/myDeploymentCode/
    /projects/
      /myWebService/...
      /myWebsite/...
      /myApp/... << full copy of the deploy folder from myApp

元のデプロイフォルダを削除する可能性がありますが、明確になるまでそのままにしておきたいと思います。

私はこれが可能であると推測していて、私はただ盲目です。そうでない場合は、ファイルを手動で移動するだけで済みます。すべての履歴を失いますが、現在の状態をキャプチャします。しかし、それは理想的とは言えません。

kostix

git subtree次のコマンドを使用してこれを行うことができます(しばらくの間組み込み、contrib以前に利用可能):

  1. git subtree split -P myApp/deployリポジトリ「A」で使用して、その「myApp / deploy」フォルダーの内容のみを含む合成履歴を作成します。
  2. 結果のコミットをリポジトリ「B」にフェッチします。
  3. git subtree add -P myDeploymentCode/projects/myApp ...マージコミットを使用してその履歴を「植え付ける」ために使用します。

結果の唯一の問題は、抽出された履歴行のすべてのコミット(新しいコードベースとマージしたものを除く)が、ファイル内のファイルが「myDeploymentCode / projects / myApp」プレフィックスの下にあるという事実を記録しないことです。次のようなパス名またはパス名プレフィックスの履歴をトレースするコマンド

git log -- myDeploymentCode/projects/myApp/foo.txt

抽出された履歴を新しいコードベースに「移植」したマージコミットを超えて戻ることができない場合があります(この例では、ファイル「foo.txt」はそれらのコミットにありますが、プレフィックスの下ではなくトップレベルにあります)。

これでよければ、それを実行してください。それ以外の場合は、最初にgit filter-branch抽出された履歴に対してエンカンテーションを実行して、履歴が植えられる新しい予想されるプレフィックスの下にファイルを持つように、それを形成するすべてのコミットを書き換える必要があります。

そのための1つの方法は

git filter-branch -f --tree-filter \
       'test -e myDeploymentCode/projects/myApp || mkdir -p myDeploymentCode/projects/myApp
       find . -mindepth 1 -maxdepth 1 \
           -type d -path ./myDeploymentCode -prune -o -print \
       | xargs -n 30 mv -t ./myDeploymentCode/projects/myApp' temp

git subtree splitステップ(1)で通知さたコミットのSHA-1名から「temp」という名前のブランチを作成したと仮定します。)

それがどのように機能するかについての詳細な説明を伴う同じ例については、これ参照しください


履歴がgit subtree split生成するのは合成であることに注意してください。つまり、履歴構成するコミットのSHA-1名はソースリポジトリに存在しません。これは、Gitの内部に精通している人には明らかですが、blobは抽出された履歴によって再利用されますがtreeオブジェクトcommitオブジェクトは再利用されませんが、念のため警告されます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

履歴を保持しながら、特定のファイルをあるgitリポジトリから別のgitリポジトリにコピーする方法

分類Dev

あるGitリポジトリから別のリポジトリのフォルダにリンクする

分類Dev

Git:ファイルの履歴をあるリポジトリから別のリポジトリにコピーします

分類Dev

あるGitリポジトリから別のGitリポジトリにフォルダを共有するにはどうすればよいですか?

分類Dev

Linuxでgitリポジトリをあるフォルダから別のフォルダに複製する

分類Dev

Gitリポジトリを通常のフォルダーとして別のレポートに移動する

分類Dev

別のgitリポジトリ内のフォルダに独立したgitリポジトリを作成するにはどうすればよいですか?

分類Dev

Git:リポジトリを別のリポジトリのサブフォルダに移動します

分類Dev

履歴を保持しながら、いくつかのフォルダーとファイルをgitリポジトリから別のリポジトリにコピーします

分類Dev

git:あるリポジトリの履歴を別のリポジトリのディレクトリにコピー(チェリーピック)します

分類Dev

Git:親リポジトリから分割せずにプライベートリポジトリのサブフォルダをパブリックリポジトリとして作成するにはどうすればよいですか?

分類Dev

プッシュされたファイルをあるGitHubリポジトリから別のリポジトリに自動的にコピーします

分類Dev

フォルダーをgitリポジトリから別のリポジトリにリンクする方法は?

分類Dev

あるリポジトリからプルして別のリポジトリにプッシュするようにgitを構成する方法

分類Dev

フォルダからサブモジュールリポジトリを作成し、そのgitコミット履歴を保持します

分類Dev

Git-ローカルリポジトリを別のローカルリポジトリのサブフォルダにコミットする方法は?

分類Dev

Codehipを介して1つのGitHubリポジトリから別のリポジトリにファイルを自動的にコピーします

分類Dev

スニーカーネット(外部ファイル)を介して、Git変更セットをあるリポジトリから別のリポジトリにエクスポートするにはどうすればよいですか?

分類Dev

ローカルのgitリポジトリを別のサーバーにコピーしますか?

分類Dev

個別のgitリポジトリをフォルダごとに整理された1つのリポジトリにマージします

分類Dev

gitリポジトリを2つの異なるコードベースとして2つの別々のリポジトリにフォークする

分類Dev

gitリポジトリ.gitをリモートから既存の作業コピーに取得します

分類Dev

あるgitリポジトリから別のgitリポジトリにサブフォルダをリンクするにはどうすればよいですか?

分類Dev

すべてのgitブランチをリポジトリ用のフォルダに変換する方法はありますか?

分類Dev

不要なフォルダーをgitリポジトリから完全に削除する-リポジトリのサイズは変更されません

分類Dev

git は外部のリポジトリ フォルダーからファイルを追加しますか?

分類Dev

ローカルGitリポジトリから単一のファイルをコピーします

分類Dev

Githubでリポジトリをフォークし、それを別のリポジトリのプライベートフォルダーに保存します

分類Dev

このgitリポジトリフォルダーをどのように利用できますか?

Related 関連記事

  1. 1

    履歴を保持しながら、特定のファイルをあるgitリポジトリから別のgitリポジトリにコピーする方法

  2. 2

    あるGitリポジトリから別のリポジトリのフォルダにリンクする

  3. 3

    Git:ファイルの履歴をあるリポジトリから別のリポジトリにコピーします

  4. 4

    あるGitリポジトリから別のGitリポジトリにフォルダを共有するにはどうすればよいですか?

  5. 5

    Linuxでgitリポジトリをあるフォルダから別のフォルダに複製する

  6. 6

    Gitリポジトリを通常のフォルダーとして別のレポートに移動する

  7. 7

    別のgitリポジトリ内のフォルダに独立したgitリポジトリを作成するにはどうすればよいですか?

  8. 8

    Git:リポジトリを別のリポジトリのサブフォルダに移動します

  9. 9

    履歴を保持しながら、いくつかのフォルダーとファイルをgitリポジトリから別のリポジトリにコピーします

  10. 10

    git:あるリポジトリの履歴を別のリポジトリのディレクトリにコピー(チェリーピック)します

  11. 11

    Git:親リポジトリから分割せずにプライベートリポジトリのサブフォルダをパブリックリポジトリとして作成するにはどうすればよいですか?

  12. 12

    プッシュされたファイルをあるGitHubリポジトリから別のリポジトリに自動的にコピーします

  13. 13

    フォルダーをgitリポジトリから別のリポジトリにリンクする方法は?

  14. 14

    あるリポジトリからプルして別のリポジトリにプッシュするようにgitを構成する方法

  15. 15

    フォルダからサブモジュールリポジトリを作成し、そのgitコミット履歴を保持します

  16. 16

    Git-ローカルリポジトリを別のローカルリポジトリのサブフォルダにコミットする方法は?

  17. 17

    Codehipを介して1つのGitHubリポジトリから別のリポジトリにファイルを自動的にコピーします

  18. 18

    スニーカーネット(外部ファイル)を介して、Git変更セットをあるリポジトリから別のリポジトリにエクスポートするにはどうすればよいですか?

  19. 19

    ローカルのgitリポジトリを別のサーバーにコピーしますか?

  20. 20

    個別のgitリポジトリをフォルダごとに整理された1つのリポジトリにマージします

  21. 21

    gitリポジトリを2つの異なるコードベースとして2つの別々のリポジトリにフォークする

  22. 22

    gitリポジトリ.gitをリモートから既存の作業コピーに取得します

  23. 23

    あるgitリポジトリから別のgitリポジトリにサブフォルダをリンクするにはどうすればよいですか?

  24. 24

    すべてのgitブランチをリポジトリ用のフォルダに変換する方法はありますか?

  25. 25

    不要なフォルダーをgitリポジトリから完全に削除する-リポジトリのサイズは変更されません

  26. 26

    git は外部のリポジトリ フォルダーからファイルを追加しますか?

  27. 27

    ローカルGitリポジトリから単一のファイルをコピーします

  28. 28

    Githubでリポジトリをフォークし、それを別のリポジトリのプライベートフォルダーに保存します

  29. 29

    このgitリポジトリフォルダーをどのように利用できますか?

ホットタグ

アーカイブ