Come parte del nostro flusso di lavoro basato su rebase, spero di utilizzare un'unione sul ramo principale. In particolare, desidero unirmi solo quando il ramo dell'argomento è stato ridefinito sul commit master più recente, rendendo in tal modo possibile unire uno in avanti veloce. Posso ottenere che utilizzando:Come ottenere `git --no-ff --ff-only` che non è consentito
git merge --ff-only
Inoltre, desidero registrare l'integrazione del ramo discussione con un vuoto commit ecco perché desidero usare --no-ff che impone che il comportamento :
git merge --no-ff
Quello che voglio davvero, però, è una combinazione di entrambi: unire solo quando è banale, ma mi permetta di registrare comunque. Git pensa che
fatal: You cannot combine --no-ff with --ff-only.
che appare ovvia per alcuni.
git merge --edit --no-ff topicbranch
non raggiunge il comportamento che voglio neanche. Quindi, come posso unirmi con l'opzione --no-ff se il ramo dell'argomento in questione viene ridefinito con l'ultimo commit master?
AGGIORNAMENTO: Sembra che la risposta di Charles Bailey farà il trucco. Se si desidera avere questo rotolato in un alias git si potrebbe emettere questo qui:
git config --global alias.integrate '!test "$(git merge-base HEAD "$1")" = "$(git rev-parse HEAD)" && git merge --no-ff --edit $1 || echo >&2 "Not up-to-date; refusing to merge, rebase first!"'
Un po 'di un boccone, ma opere. Notare la forza di una modifica del messaggio di commit con l'opzione --edit
.
Perché l'ovvietà falso? '--ff-only' dice che non voglio fare nessun commit di merge Voglio solo spostare il ramo locale in avanti - se possibile - a questo suggerimento; '--no-ff' dice che * voglio * effettuare un commit di unione tra qui e là anche se è possibile spostare semplicemente il ramo locale in avanti. Per inciso, non vedo dove si sta specificando '--ff-only', quindi non vedo da dove viene l'errore. –
Il --ff-only è stato emesso nel titolo. Modificheremo il testo per renderlo più chiaro. E sto usando il controllo -ff-only per vedere se l'unione è banale. @CharlesBailey, trovo che sei abbastanza liberale con i tuoi voti negativi. tsk tsk. – DrSAR
Quindi in pratica non vuoi '--ff-only' perché * fai * vuoi fare un commit di unione. Puoi eseguire il controllo come passaggio separato: ad es. 'test $ (git merge-base HEAD topicbranch) = $ (git rev-parse HEAD) && git merge --no-ff topicbranch' –