私は2つのブランチB
(プライベート)とG
(パブリック)を持っています。無関係なブランチ間のgit-mergeが不要なコミット履歴をインポートするのを防ぐ
ブランチB
(プライベート)は私の主な開発ブランチであり、プライベートコード、独自のアルゴリズム、および公開できないその他のものを含むあらゆる種類のコミットを含んでいます。
ブランチG
(public)を作成したときに、B
(プライベート)から分岐することはできませんでした。これにより、以前公開されていないすべてのものが履歴に含まれるため、最初からブランチします(つまり、親なし)。その後、ブランチB
(プライベート)からブランチG
(パブリック)までのすべてのファイルを正確にインポート(コピー)し、それは最初のコミットでした。
それ以来、ブランチB
(プライベート)で開発していて、新しいコミットが行われるたびに、G
(公開)にチェリーピックアップしました。
これはすべて私がgitを始めていた時期に行われたので、私はおそらくこれをもっと良い方法でやったかもしれないことを知っていますが、この船は長く航海しています。
gitがどのように動作するのか(使い方について)もう少し学んだので、B
をG
(あるいはその逆)にマージしたいので、毎回チェリーピックを止めることができました。
は
G
へB
のマージ:これは歴史のコミットへのアクセスを持っているでしょう「はG
が閲覧誰がためunnaceptableであるS(プライベート)G
にコミット履歴、」はB
のすべてを輸入だからここに私が試したものですプライベート/機密データ/アルゴリズム。G
B
へのマージ:これはG
(プライベート)の上に桜摘みコミットのすべてを複製し、迷惑ではなく、大したことです。しかし、B
をG
にマージしようとしてからまだ十分ではありませんでした。B
の(プライベート)コミット履歴のすべてをG
にインポートしました(受け入れられません)。私はこれが、gitがB
からG
への将来のマージの出発点として使用する2つのブランチに対して「共通の親」を作成すると思っていましたが、そうではありませんでした。 1.G
のオフリベースB
と同じ問題:
B
のオフリベース
G
ごとにG
にコミットするために、競合が作成されましたので、これは元に戻すことを証明しました。
TL; DR:私は2つの支店B
を持つプライベートで公開されている民間のコミットとG
が含まれています。これは、彼らがどのように見えるかです:
`B` (private): a -- b -- c -- d -- m -- n -- o -- p `G` (public): w -- x -- y -- z -/
m
はB
にG
からコミットマージです。
私が(単一のマージがもたらすコミットそれらを一つずつチェリーピッキングせずに、G
に「マージ」またはn
、o
、p
をコミット(および他のB
にプッシュコミット)「をもたらす」、「輸入」したいですB
の前回の履歴をすべて取り込んでいない限り、G
に変更しても問題ありません。
私の問題の解決策があるかどうかは分かりませんが、助けてください。
私はこれが行く方法だと思う、本当にサブモジュールを使用して考えていない、ありがとう! – Guaycuru
私はサブモジュールについていくつかの読書をしました。いくつかの質問がありました:プライベートサブモジュールとして独自の/プライベートクラスを追加すると、公開リポジトリにアクセスする誰もがそのサブモジュールに関するエラーに直面していませんか?みんなが公的なレポをチェックアウトするのを妨げないだろうか? – Guaycuru
@Guaycuruこれは私が書いたものです。私的なレポは、公共のものをサブモジュールとして参照します(追加します)。反対ではありません。 – VonC