2

開発チームのメイン プロジェクトと並行して開発されたサブプロジェクトにサブモジュールを使用して約 6 か月が経ちました。

- v-- Repository (developer(s)) --v

- Main project (dev team)
    - Sub project 1 (me)
    - Sub project 2 (me)

いくつかの理由から、サブ プロジェクトをメイン リポジトリの通常のファイルと見なしたいと考えています。
したがって、サブプロジェクトの1つで変更...

  • ...サブプロジェクトからコミットしてプッシュすることなく、メインからコミット可能でなければなりません
  • ...サブプロジェクトからまだコミット可能である必要があります

問題は、これらのサブモジュールを無効にする方法です。
メインリポジトリのファイルが必要なので、無効にして削除しないことを意味します


これが私がしたことです:

  • 削除しました.gitsubmodule
  • からサブモジュールのセクションを削除しました.git/config
  • rm --cached my_subprojects
  • git add/commit/push

これをマージしようとすると、サブプロジェクトはまだサブモジュールと見なされているようです

modified:   Sub project 1 (new commits)
modified:   Sub project 2 (new commits)
4

2 に答える 2

2

gitlink (フォルダーをサブモジュールとしてマークし、そのサブモジュールの SHA1 を記録するインデックス内の特別なエントリ)を削除する必要があります。

git rm --cached my_subprojects # no trailing /

他の唯一のコマンドは、git submodule deinit my_subprojects.gitmodules.git/modulesおよび を処理するgit/configです。

その後、 repo を subtree として追加my_subprojectsできます。

于 2014-08-04T14:54:41.080 に答える
1

.git既存のファイルを保持したい場合は、各サブモジュールのパスからファイルを削除することも忘れないでください。

サブモジュールは次の場所で定義されます。

  • .gitmodules.gitsubmodulesあなたが上で述べたようではありません)
  • .git/modules(実際のリポジトリ)
  • path/to/module/.git(コミット ID を指すプレースホルダー)
  • git/config

これらすべてをクリーンアップした場合は問題ありませんが、ブランチ/マージがあなたを噛んでいないことを確認してください-バージョン管理下.gitmodulespath/to/module/.gitあるため、ブランチによって異なる場合があります.

あなたがやろうとしていることには、気にするかもしれないし、気にしないかもしれない別の問題があります - サブモジュールのコミット履歴を保存しません。各サブモジュールをリモートとして追加し、適切なリモート ブランチにマージすることで、コミット履歴を保存できます。

于 2014-08-04T13:01:01.827 に答える