問題

  • 私はリモートリポジトリ "shared_stuff"とリポジトリを持っています "プロジェクト_a"
  • ディレクトリ構造は両方のリポジトリで同じですが、コンテンツは異なります
  • 時々私は変更を取りたい "shared_stuff"を "project_a"に変換します。
  • "shared_stuff"のすべての変更が上書きされるはずです 最終的に "project_a"に既存のファイルがあります
  • しかし、変更/新しいファイルは "project_a"の "git metadata"に追加するべきではありません。つまり、 "project_a"の一部になるべきではありません
  • gitがなければ、 "shared_stuff"のすべてのファイルを "project_a"にコピーしてproject_aのすべてを上書きします

gitでエレガントなソリューションはありますか?サブツリーoder Submoduleは私が見る限り動作しません。

編集:明確化 - 変更はproject_aのインデックスに追加されるはずではなく、project_aでコミットしたくありません。それどころか、gitignoreファイルをproject_aに追加して、gitがshared_stuffから取得した変更を無視するようにします(命名規則で認識できます)

  ベストアンサー

repos project_ashared_stuff の 2 つのリモートがある場合、 shared_stuffリポジトリのローカルブランチを作成し、ローカルブランチのみに変更を引き出すことができます:git branch shared_stuff-master shared_stuff/master(masterブランチを使用し、そうでない場合は置き換えます)。次に、[squah merge]共有ブランチをプライマリブランチにプッシュしてproject_aにプッシュできます。

 git checkout -b shared_stuff-master shared_stuff/master
git pull shared_stuff master
git checkout -b master project_a/master
git merge --no-commit --squash shared_stuff-master
git commit -m "merged changes from shared_stuff"
git push project_a master
 

したがって、shared_stuffリポジトリからproject_aリポジトリへの参照は公開しません。変更されたファイルのみが公開されます。

  同じタグがついた質問を見る

git