0

複数のコンポーネントを含む git リポジトリがあり、それぞれが独自のディレクトリにあります。各コンポーネントを独自の git リポジトリに配置したいと考えています。ここでの要件は、git の履歴が失われないことです。そのため、git Blame は引き続き機能します。私はこれを行う方法を探していて、無関係な git 履歴を持っていません。これには 2 つの理由があります。コンポーネントの一部ではないコードへの変更でレポの履歴が乱雑になることを望まないことと、履歴内のコミット数やその他のものが適度に正確であることを好みます。

私はすでにこの役立つ投稿を見ましたが、これは正しい方向に進んでいます。ただし、無意味なコミットを完全に削除するわけではありません (そのため、履歴には多くの null コミットがあります)。また、過去に他のコンポーネントから移動されたファイルの履歴 (コンポーネントが除外されている場合) や、無視されたコンポーネントのファイルにも触れたコミットで触れられた場合でも、履歴は保持されません。

これを行うより良い方法はありますか?

4

1 に答える 1

1

git filter-branchリポジトリをサブディレクトリに縮小するための特殊なモードがあります。オプションをチェックしてください--subdirectory-filter。無関係なコミットを自動的に取り除き、サブディレクトリの内容をリポジトリの最上位に移動します。

ただし、ファイルの名前変更は追跡/追跡しません。あなたがそれを望むなら、あなたは多くの手作業を見ています。結局のところ、古い場所にあるファイルへの変更を含めるだけでなく、名前変更後の場所へのパスを書き換える必要があります。これを行う git に同梱されているものはありません。

于 2013-06-13T09:17:40.167 に答える