1

職場では、すべての統合が最終的にブランチで終わる機能ブランチ モデルの上に開発を行っていmasterます。から分岐しmaster、 にマージmasterます。これにより、非常に複雑な履歴グラフが作成され、開発ワークフローを簡素化する方法を検討しています。

これを行う 1 つの方法は、 mergeの代わりにリベースします。ただし、上書きアクセス許可が無効になっている内部 GitLab インスタンスがインストールされています (プロジェクトのみで有効になることはありません)。そのようなリベースは問題外です。

正直なところ、これを回避する方法はありません。しかし、私は Git の専門家ではないので、何か不足している可能性があります。

助言がありますか?

4

1 に答える 1

2

編集 - 私の最初の答えは決して最善の方法ではありませんでしたが、うまくいきました。誰かに興味がある場合に備えて、以下に残しました。より良い答えは次のとおりです。

一連のコミットでgit cherry-pickを使用featurebranchして、一度に 1 つずつコミットを に適用できますmaster。コミット範囲の仕様はどれでもかまいませんが、あなたの場合、おそらく最も簡単なのは(マスターがチェックアウトされている場合):

git cherry-pick featurebranch ^master

これは、「マスター上にない機能ブランチ上のすべてをチェリーピックする」ことを意味します。

古い、貧弱なソリューション

git format-patchgit amを使用できます。

ブランチ上featurebranchで実行すると、上にないgit format-patch masterコミットごとにパッチ ファイルが生成されます。その後、 に切り替えてパッチを適用できます。featurebranchmastermastergit am

featurebranch(誰とも共有されていないより単純なケースでは、に対してリベースするのではなく、代わりに に対してリベースすることができますmaster。これにより、追加のコミットが追加された のコピーが作成されます。次に、に対してリベースされます。これにより、git が高速になります-フォワード。)featurebranchfeaturebranchmasterfeaturebranchmastermasterfeaturebranchmaster

于 2014-11-11T19:11:21.537 に答える