3

学術研究に取り組んでいますが、私たちのプロジェクトに適した git ワークフローはまだ見つかりません。

設定: メイン プロジェクトはブランチ マスターに保持されています。新しいアイデアが生まれると、研究をサポートするために新しいブランチが作成されます。通常、主要なプロジェクトに関して、異なる人々によって推進されたいくつかの並行研究があります。

私が研究ブランチ R に取り組んでいるとき (数か月かかり、多くのコミットが必要になる場合があります)。私のコミットのいくつかは、研究とは直接関係がなく、プロジェクト自体を改善しています... これらのコミットを master ブランチにプッシュしたいです (他の人にとって役立つ可能性があります)。

どうすればいいですか?チェリーピック?多くのチェリーピック(より多くの人々と異なるブランチから)の後、最後にブランチRをマスターとマージするのは難しいと思います。

おそらく、より良いオプションは、コミットする前にマスターに切り替え、コミットを行い、次に切り替えてマスターから更新をプルすることです。しかし、これは次の 3 つの理由から難しいようです。

  1. 多くのファイルが競合などでコミットされていないため、master への切り替えは容易ではありません (何とか stash を使用する必要があります)。
  2. 後になって、R から master に古いコミットをプッシュする必要があることに気付くことがあります。
  3. 他の誰かからのマスターからの他の更新を望まないことがあります。それらは後で役に立ちますが、現時点ではそれらに対処する時間がありません。

それを行う適切な方法は何ですか?

4

1 に答える 1

1

あなたは考えることができます:

  • (ブランチR上)git rebase --interactive:コミットを並べ替えるために、master最初に必要なものを並べ替え、次に1つの詳細を続けますR
  • (ブランチ上mastermerge SHA1(あなたが望む最後のコミットの正しいSHA1 master

しかし、それはブランチの履歴を変更しますR。これは、他の人がクローンを作成した場合にも問題になる可能性があります (そのイベントについて明確に伝え、R変更した新しいブランチにブランチをリセットしてプッシュするよう依頼する必要があります)。

于 2013-05-11T00:31:47.810 に答える