2017-10-19 12 views
0

私は、テーブルの出力カップルとして与えるプロジェクトがあります。私はそれを最適化して、各ステップで出力テーブルが等しいか、少なくとも違いが説明可能であることを検証する必要があります。Gitブランチ結果の比較

私は2つのブランチを作成しました。そのアイデアは、1つのブランチでコードを繰り返し変更し、両方を実行して最後に結果を比較することです。最初のブランチの最後のコミットの変更を2番目のブランチに適用し、最初のブランチへの変更などを行います。

以前のコミットをマージせずにブランチの最後の変更を別のブランチに再適用する方法はありますか?

+0

なぜブランチを使用しますか?毎回コミットし、 'git diff HEAD^... HEAD'。 – Ryan

+0

ストック結果とログを別のディレクトリに簡単に比較できるようにする – Gabriel

答えて

0

最適な解決策は、最初にコミットを線形に保つことです。あなたがコミットの行を歩いている2つのブランチを使いたいのであれば、それは意味があります。 2行のコミットを行うことで、不要な作業が発生します。

コメントから、出力ディレクトリなどに影響を与えるいくつかの基本設定の変更があると推測します。出力をリダイレクトするためにコード変更を維持する必要があるようなコード内のこれらの構成を管理することは設計ミスであり、ここで直面している問題は症状です。あなたは、その問題を修正することで、あなたの儲けをさらに強めるだろう。次に、両方のブランチを同じコミットで開始し、変更を加えてテストブランチにコミットし、テストを実行します。通過した場合は、変更をメインブランチにマージ(早送りを使用)し、そうでなければテストブランチを元に戻します。

しかし、代わりに一度の努力を費やすことを決心している場合(次に何かをしたいときにこの設計上の欠陥があなたを抱き上げるのを待っている)、代わりにあなたがやっていることをすることができます。チェリー - テストブランチからメインブランチにコミットするHEADを選択します。

https://git-scm.com/docs/git-cherry-pick

私は桜狩りに言及している場合、それはgitの中で最も過剰推奨コマンドを呼び出すことですが、10のうち少なくとも9倍ということに注意してください。関連する最も近い操作(該当するときに好きなもの)は、rebaseとsquash mergeです。どちらもあなたがこのケースで望んでいたように動作します。私にとって、これは設計がまずは正しくないという証拠です。

+0

答えをいただきありがとうございます。デザインソリューションを提案してください、またはもっと情報が必要ですか?私 – Gabriel

+0

私はおそらく実際の詳細に行くのに十分な情報がありません。出力ディレクトリのようなものは、おそらく構築ファイルの中に置かれる可能性があります。これは、ビルドプロセスの一部として選択/投入されるか、実行時に提供されます。そこから、多くのバリエーションが可能です。あなたはソースコントロールの両方でconfigの "テスト"と "メイン"バージョンを保つことができます。あるいは、ソース管理のテンプレートだけを保持し、特定の値をgitの外部に提供することもできます。あなたは、単にパスを相対的に作成し、メインをチェックして作業ツリーを分離するテストをすることもできます。あなたのプロジェクトによって異なります –

関連する問題