2016-07-19 33 views
2

最新のプルリクエストでメインブランチのコミット履歴全体を何とか取り上げました。githubがコミット履歴全体をピックアップする

This pull request is big! We’re only showing the most recent 250 commits.

私は機能をたくさん持っている枝を持っている:私のPRは、メッセージが含まれています。これはテストに使用される作業ブランチです。そのブランチを個々のプルリクエストに分けて、それぞれのPRを別々の機能としてレビューしてみる必要があります。異なる機能を持ついくつかのクロスオーバがあるので、これらの別々のブランチは機能しなくなります。

私はmasterから分岐して、最新の作業ブランチでコミットされていないマージを行います。私は、その機能に関連してマージしたいファイルを選びます。これらのPRは相互に構築されません。それぞれはmasterで最新のものですが、お互いには関係ありません。

ターゲットブランチが作業ブランチの全履歴を取得しているように見えます。どうしたらこのことが起こらないようにすることができますか?リベースによってこれを修正できますか?

+0

私はそれがかなりの多くの開発分岐をマスターするのを見ることができます。何が問題ですか? – maszter

+0

OPの編集をご覧ください。 –

+0

どのようにこれらのPRをやっていますか? 1つの支店(ブランチが死ぬ)あたり1つですか、それともブランチごとに複数ですか? – Makoto

答えて

1

これは逆です。私は働いている支店でたくさんの機能を開発しています。次に、私は元に戻り、SourceTreeを使用して作業ブランチとのコミットされていないマージを行います。これにより、どのファイルをマージするかを制御することができます。私は各機能のために別々のブランチを作成します。コミット全体ではなく個々のファイルを選択することができれば、このようにする必要はありません。

マージコミットをコミットしなくても、作業ブランチのHEADを親の1つにして、その履歴を引き継ぎます。

私はあなたが好きなことをgit resetとすることができると思いますが、はるかに簡単なオプションはそこにある作業ブランチをチェックアウトして、すべてのファイルをmasterのブランチにあるチェックアウトにコピーすることです。そして、あなたが望む変更をステージングし、適切なコミットにそれらを定式化することができます。

コミットがアトミックであれば、これははるかに簡単です。あなたが言うように、単にチェリーピックを選択することができます。あなたのコミットを整理する際に少し前向きな作業をすることは、後でそれらを分かち合うために多くの時間を節約します。

+0

'git reset'でどうすればいいですか?私はあなたの解決策を理解しているか分からない。だから私は 'マスター 'をクローンして、私は働いている支店をチェックアウトします。それから私は "マスターの支店にあるチェックアウトにすべてのファイルをコピーします"。ブランチ間でどのようにコピーするのですか?ファイルを一時ディレクトリにコピーし、ブランチを切り替えてコピーすることはできますが、それは簡単ではなく、エラーが発生する可能性があります。 –

+2

はい、一時ディレクトリを使用することをお勧めしますが、リポジトリの別のチェックアウトである一時ディレクトリを使用することをお勧めします。これは、1) 'git clone /tmp/working-copy' 2)' cd/tmp/working-copy && git checkout working-branch'のようになります。3) 'rsync -a/tmp /作業コピー〜/素晴らしいプロジェクト '4)' cd〜/ awesome-project && git status'。 Gitはどのファイルが変更されたかを教えてくれるので、 'git add'を使ってそれらを選択的に実行し、コミットするものを決定することができます。 –

+0

これは実際には機能しませんでした。'〜/ awesome-project'に'/tmp/working-copy'を追加しました。 –

関連する問題