Ho unito il ramo beta al ramo principale. Ho spinto verso l'origine. Ora voglio che il master sia come prima della fusione sia localmente che da remoto.Quale hash di commit per annullare un'unione spinta utilizzando git-revert?
Una buona risposta per undoing a merge that was already pushed suggerisce
git revert -m 1 commit_hash
Se questa è davvero la strada da percorrere, come posso determinare commit_hash? Ho provato, senza successo, l'hash restituito da merge-base:
$ git merge-base --all master beta
1f4b949b7ef97abf913ae672e3acd0907abfac1b
$ git revert -m 1 1f4b949b7ef97abf913ae672e3acd0907abfac1b
error: Mainline was specified but commit 1f4b949b7ef97abf913ae672e3acd0907abfac1b is not a merge.
fatal: revert failed
Ho esaminato entrambe le interpretazioni git-log e gitk dei rami, ma sono molto lunghi, e sono incerto abbastanza della mia interpretazione di sentirsi dovrei cercare assistenza prima di fare un pasticcio forse più grande. Beta è stato derivato dalla v2 che è stata derivata dal master. Ci sono state alcune fusioni da master in v2 e beta lungo la strada, dal momento che ho mantenuto le nuove filiali aggiornate con il master. La fusione nella direzione da beta a master è stato un errore che vorrei correggere.
Una volta che faccio determinare il punto di fusione, se trovo qualche commit fatti sul master dopo la fusione che in realtà dovrebbe essere sul ramo beta, qual è il modo migliore per spostarli sopra?
Prova 'log --all --graph --pretty = tFormattare: '% Cred% h% Creset -% C (giallo)% d% Creset% s% Cgreen (% un cr%)% Creset' - abbrev-commit --date = relative' (lo nomino personalmente), mostrerà i commit di tutti i rami e la loro data, e anche dove avvengono le fusioni. –