私のチームは過去数か月間、あるプラットフォームに取り組んでおり、会社の他のメンバーにリリースする準備ができています。http://git-scm.com/book/en/Distributed-Git-Distributed-Workflowsにある「統合マネージャーのワークフロー」に従います。
私たちのチーム リポジトリには、会社の他のメンバーと共有したくない独自のコードがいくつかあるため、現在のチーム リポジトリの「機能を取り除いた」バージョンを作成する必要があります。私は次のことをやろうとしています:
既存のチーム リポジトリのクローンを作成して、「統合マネージャー リポジトリ」を作成します。
rm
すべての独自ファイルcommit
実効値rebase -i --root
すべてのコミットを押しつぶして巻き戻しを防ぐclone --bare
「祝福されたレポ」を作成するための「統合マネージャーレポ」
現在、Git に比較的慣れていないため、このアプローチについていくつかの点が不確かです。
「祝福されたレポ」からチームのレポにまだプルできますか?
#1 を実行できると仮定すると、rms がプルされ、すべての専有ファイルが削除されると思います。私たちのチーム リポジトリのより高度な状態を、祝福されたリポジトリ状態の子状態として表示するには、Git が必要です。これはリベースでできることですか?
プラットフォームでの作業を続けるにつれて、「公開」機能と独自機能の混合物をチーム リポジトリにコミットします。「パブリック」機能のみをプッシュする最良の方法は何ですか? コミットの順序を
rebase
変更して、すべての「パブリック」機能のコミットがコミット履歴の先頭に来るようにしてから、最新の「パブリック」機能コミットの SHA までのみ git push できますか?
事前に助けてくれてありがとう...私は、このような大きな変更を加える前に、経験豊富な Git ユーザーによってこれを実行したかったのです。
更新
申し訳ありませんが、明確ではありませんでした...ステップ2、3、および4はすべて、「統合マネージャーリポジトリ」に適用されることを意図していました。いずれにせよ、私はさらに読んで、「パブリック」な変更を行うたびrebase
に、チームの共有リポジトリにとっては良い考えではないと判断しました.rebase
ステップ2、3、4の代わりに私がやったのrm
は、「統合マネージャーリポジトリ」の.gitフォルダーで、.gitで最初からやり直しましたgit init
。次に、この新しい「統合マネージャー リポジトリ」から取得し、-s ours
チームのバージョンがスーパーセットであるため、フラグを使用してチームのリポジトリとマージしました。これで、チーム リポジトリとパブリック リポジトリに共通のコミットができました。チーム リポジトリに「パブリック」ブランチを作成し、この共通コミットを参照しました。今後は、パブリックに変更を加えるたびに、この「パブリック」ブランチにチェリーピックしてから、パブリック ブランチを「統合マネージャー リポジトリ」にプルする必要があります。