以下のようなコミットグラフがあります。 *
とマークされたコミットは、多くのコミットを表します。すでにマージされたブランチを再マージするには?
A*
|
B---------
| |
C* D* <- old feature branch
| |
E---------
|
F*
|
G <- master
マージコミットEが正しく行われず、C *の一部の変更(すべてではない)が失われました。このマージをやり直して、現在のマスターに変更を再導入するにはどうすればよいですか?
すべてがすでにプッシュされています(オープンソースプロジェクト)ので、履歴の変更はオプションではありません。
私はコミットのC *からパッチを作成しようとしたマスターにそれを適用されますが、C *からの変更の一部が正しくマージされているので、それがコミットするので、プロジェクトが進化しているため、約80%パッチは失敗します。
理想的には、C *のすべての変更を適用し、それらを適用してすべての競合を解決します。しかし、ブランチはすでにマージされているので、gitは変更を検出せず、再度マージすることもできません。
$ git checkout 5bc5295 # C
HEAD is now at 5bc5295... cleanup
$ git checkout -b "missing-commits"
Switched to a new branch 'missing-commits'
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
$ git merge missing-commits
Already up-to-date.
をあなたはgitのは、間違ったコミットを元に戻してみました。これにより、悪いコミットによってもたらされた変更や失われた変更が取り消されます。何かが戻ってきます。 –
@Eyortherどのように役立つでしょう、マージは間違ったコミットですか? – Vampire