Jako część naszego ciężkiego workflow rebase, mam nadzieję użyć scalenia w głównej gałęzi. W szczególności chcę scalić tylko wtedy, gdy gałąź tematu została ponownie wylosowana na ostatnim master commit, powodując, że dowolne scalenie jest szybkie. Mogę to osiągnąć za pomocą:Jak osiągnąć `git --no-ff --ff-only` które jest niedozwolone
git merge --ff-only
Ponadto chciałbym nagrać integrację branży tematu z pustym popełnić dlatego chciałbym użyć --no-FF, który wymusza to zachowanie :
git merge --no-ff
Co naprawdę chcę, chociaż jest kombinacją zarówno: połączyć tylko wtedy, gdy jest to trywialne, ale pozwól mi nagrać go i tak. Git uważa, że
fatal: You cannot combine --no-ff with --ff-only.
który pojawia się oczywiste dla niektórych.
git merge --edit --no-ff topicbranch
nie osiąga zachowanie chcę albo. W jaki sposób mogę scalić z opcją --no-ff, czy dana gałąź tematów jest ponownie bazowana na ostatnim zatwierdzeniu głównym?
AKTUALIZACJA: Wygląda na to, że odpowiedź Charlesa Baileya wystarczy. Jeśli chcesz umieścić to w aliasie git, możesz to wydać:
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!"'
Trochę kęsa, ale działa. Zanotuj siłę edycji komunikatu zatwierdzenia z opcją --edit
.
Dlaczego oczywistość fałszywe? '--ff-only' mówi, że nie chcę dokonywać żadnych scaleń. Po prostu chcę przenieść lokalny oddział do przodu - jeśli to możliwe - do tej wskazówki; '--no-ff' mówi, że * chcę *, aby dokonać scalenia między tu i tam, nawet jeśli było możliwe proste przeniesienie lokalnego oddziału do przodu. Nawiasem mówiąc, nie widzę, gdzie określasz '--ff-only', więc nie widzę, skąd błąd pochodzi. –
Opcja --ff-only jest wydawana w tytule. Zmienię tekst, aby był jaśniejszy. I używam -ff-only jako sprawdzenia, aby sprawdzić, czy scalanie jest trywialne. @ CharlieBailey, uważam, że jesteś dość liberalny z twoimi głosami w dół. TSK TSK. – DrSAR
Więc w zasadzie nie chcesz '--ff-only' ponieważ * chcesz * chcesz dokonać scalenia commit. Test możesz wykonać jako osobny krok: np. 'test $ (git merge-base gałąź tematów HEAD) = $ (git rev-pars HEAD) && git merge --no-ff topicbranch' –