まずシナリオをプッシュ:ロールバックマスターからの古い枝は関係なく、他のブランチのその後
私は私が働いていた3つの支店を持っています。ブランチA、ブランチB、ブランチC
ブランチAをマスターにテストし、マージした/プッシュしました。ブランチAはマスターにマージされているので、ブランチAを削除します。
1週間後、ブランチBおよびCがテストされ、マスタにプッシュされます。 BとCはマスターにマージされているので、私はBとCを削除します。
もう1週間後、上司がオフィスに来て、「Aは悪い考えで、これを削除したい」と言います。 明らかに、彼はAを削除したいが、BとCをプロダクションに保存したい。
どうすればいいですか?このシナリオでは、Aは、BとCから完全に独立している
第2のシナリオ:
このシナリオでは、B以外は、最初のシナリオと同じであり、Cは、Aがマスターにマージされたときにマスターするリベース。 こうして、彼らはAのおかげで利用可能な新しいメソッドを受け取り、それらを使用しました。
今私はBとCを壊さずにAを "削除"できますか?
私には「テストは何が間違っているかを教えてくれる」と答えていますが、テストはありません。
ありがとうございました。 最初のシナリオについては
だからgit revertはマージを "削除"しますが、その後のコミット(Aからではない)はまだそこにありますか? –
@SteveChamaillard 'git revert'は実際に_new_ commitを追加します。このコミットは、' A'を 'master'にマージしたものの鏡像を行います。実際にはそこに残るマージコミットは実際には削除されませんが、機能的にはマージが起こっていないかのように振る舞います。 –
diffを見つけるのに使うメインラインを指定するrevertコマンドに '-m 1'を追加する必要があると思います。そうしないと、-mオプションを指定せずにマージを元に戻すため、復帰が失敗します。 – lucash