5

私たちのプロジェクトでは、いつものように master ブランチがあります。それに基づいて、設定が変更される展開ブランチがあります。また、これに基づいて、デプロイメントのミラーを実行するミラー ブランチがあります。マスター ブランチには、構成変更パッチを含めないでください。

小さな機能と修正は、ミラー ブランチで開発されています。機能を追加すると、次のようになります。

master:      history ┐
deployment:          ├─ deployment-config
mirror:              └─ mirror-config ── feature

機能をマスターに戻すには、まずミラー ブランチのパッチを並べ替える必要があります。

master:      history ┐
deployment:          ├─ deployment-config
mirror:              └─ feature ── mirror-config

これで、それを master に早送りマージできます

master:      history ┬─ feature ┐
mirror:              │          └─ mirror-config
deployment:          └─ deployment-config

次に、マスターをミラーにマージし、マスターにリベースします

master:      history ── feature ┐
mirror:                         ├─ mirror-config
deployment:                     └─ deployment-config

それを自動化するプラグインまたはツールはありますか?

  • 新しいコミットはすべて、最上位のコミットの「下」に自動的に適用されます。
  • すべてのマージまたはチェリーピックは、トップコミットの「下」にも自動的に適用されます。
  • そのようなブランチからのマージは、トップコミットの「下」の状態からプルしますか?
4

2 に答える 2

4

一般的に、私はその構成コミットの状況から逃れることをお勧めします。構成をデプロイメントに保存するだけではいけませんか?または、ここで説明したように、スマッジフィルターを使用します:https ://stackoverflow.com/a/13616911/758345

それが不可能な場合は、質問に答えさせてください。gitのブランチは非常に軽量であるため、目的を達成するためのより簡単な方法があります。これらはどれも完全な自動化ではありませんが、非常に単純であり、そのための小さなスクリプトを確実に作成できます。

すべての新しいコミットは、トップコミットの「下」に自動的に適用されます

状況についてはよくわかりませんが、変更を加えてコミットしたいとします。

  1. 現在のブランチヘッドのSHAを覚えておいてください
  2. 変更を隠します
  3. git reset --hard HEAD^
  4. stash pop
  5. 専念
  6. 古い枝頭をチェリーピック

すべてのマージまたはチェリーピックも、トップコミットの「下」に自動的に適用されます

上記と同じ:reset --hard、あなたの仕事をしてください、古い枝の頭をチェリーピックしてください

そのようなブランチからのマージは、トップコミットの「下」の状態からプルしますか?

これは非常に簡単です:git merge mybranch^


作業ディレクトリを変更したくない場合、および「config commit」によって変更されたファイルが他の操作によって変更されない場合は、次のようにすることができます。

  1. 現在のブランチヘッドのSHAを覚えておいてください
  2. ソフトリセットを実行します。git reset HEAD^
  3. gitに設定ファイルを無視させるgit update-index --assume-unchanged
  4. コミットを作成する
  5. git update-index --no-assume-unchanged構成ファイルに対して実行
  6. 再度コミット–これにより構成ファイルが再作成されます。

スクリプトを使用してこれを自動化する場合は、gitを使用して、configcommitを確認することで構成ファイルのリストを取得できます--assume-unchanged。これを自動化したくない場合は、手順3と5をスキップして、手順4で構成ファイルをコミットしないようにしてください。

于 2012-12-24T04:09:18.697 に答える
0

並べ替えを自動化できるのはgit rebase -i --autosquash、コミットメッセージに基づいてコミットを並べ替え/スカッシュできる です。

何かをスカッシュしたいコミットがわかっている場合は、「<code>squash!」というメッセージでコミットできます。$other_commit_subject」.
次に、 を実行するgit rebase --interactive --autosquash commitishと、行は自動的に に設定されsquash、件名のコミットの下に配置されます$other_commit_subject

(詳細については、「 GIT チェックインのトリミング/GIT 履歴の圧縮」の第 2 部を参照してください)

これは、特に「機能」コミットと「ミラー構成」コミットが混在している場合に、「機能」コミットの並べ替えを容易にするためのアイデアになる可能性があります。

並べ替えたら、rebase --ontoこれらのフィーチャ マージを正しいブランチに移動できます。
たとえば、「複雑な git rebase 操作」を参照してください。

それに加えて、これらのタスクを自動化できるプラグインを知りませんgit rebase

于 2012-12-23T13:51:51.640 に答える