gitとgit-hubで2つの別々の、しかし非常に類似したコードベースを処理するための最良の方法は何ですか?
バックグラウンド
小さなシェルスクリプトプロジェクト用のgitリポジトリがあります。コードのファイルは2つか3つしかなく、私は1つのファイルで作業することがよくあります。私はもともと自分の特定の目標を達成するためにプロジェクトを作成しましたが、他の人にとってより一般的に役立つように書いています。私は一般的なユースケースバージョンを作成し、それを自分の特定の目標に固有になるように変更します。特定のバージョンでは、変数を変更したり、パスワードを入力したり、一部のコードの順序を切り替えたり、forループを取り出したりする場合があります。
何を試したか
私は2つの異なる方法を試しましたが、どちらも私が思うほど最適には機能しませんでした。
- 2つの別々のリポジトリ
- 問題:コードが1つに変更され、他のコードに簡単かつ選択的にマージできない
- 1つのリポジトリに2つのブランチ
- 問題:ブランチは、最終的にはマージして戻されるようになっています。これらを完全にマージするのではなく、コードの一部を選択的にマージすることを意味します。
- 問題:ブランチ間でマージコマンドを使用しようとすると、どのブランチのどのコードがマージされているかについて非常に簡単に混乱することがわかりました。どういうわけか、完全に意図しない2つのコードをマージしましたが、両方のブランチのファイルの内容を確認するまで、誤ったマージの兆候はありませんでした。
また、 2つの別々の(しかし類似した)コードベースを1つのSVN担当者にマージする方法も見ました。それはSVNについてです。私はSVNを知らないので、フォローするのは難しいです。彼はこのコードの1つのバージョンを公開しようとしていないので、それは別の質問だと思います。
解決したいユースケース
具体的には、次の場合に問題が明らかになります。
- コメントの同期-専用バージョンを準備していますが、行の最後に説明的なコメントを追加できることに気付きました。追加しましたが、コメントは一般版ではありません。
- 共有したくないもの-専用バージョンを準備していて、パスワードを追加するか、操作の実行順序を変更します。これらの変更が一般化されたバージョンに移行することは望ましくありません。
- 同じファイル-上記の2つの変更は同じファイルに含まれることが多いため、それらをマージするのは困難です。インタラクティブなマージがありますが、1つのファイル内でインタラクションを実行できるかどうかはわかりません。
- General-> Specialized-私または他の誰かが、一般化されたバージョンを更新して、私の専門的なバージョンにも役立つ新しいコンテンツまたはコメントを含めることができます。スペシャライズドバージョンの他のコードの違いを台無しにすることなく、これらを一般->スペシャライズドから持ち込みたいと思います。
GitとGithub
ほとんどの場合、私の質問は、gitの範囲内でこれを行う方法を考えています。ただし、githubとの対話方法にも影響を与える可能性があります。私の一般化されたバージョンはgithubにあります。専用バージョンはgithubにアップしないでください。上記の私のブランチメソッドは、注意すれば両方のブランチをプッシュしなかったと思います...しかし、私はいつも確信が持てませんでした。いずれにせよ、ソリューションでは、公開されているバージョンと、ローカルに保持されているバージョンが1つあるようにする必要があります...少し複雑であるか、注意が必要な場合でも。