git "Fast forward merge" tylko dla "first parent"

0

Pytanie czy da się zmusić git-a by robił merge przez fast forward tylko jeśli wszystkie kolejne commitypo drodze są mają między sobą relację child-first parent?
Zupełne wyłącznie fast forward niezbyt mi odpowiada.
np jestem na master (którego nie zmieniałem) i robię git pull origin master, to nie chcę nowego commita tylko fast forward,
ale jak jestem na master i robię "git pull origin feature" to nie chcę "fast forward" (mimo, e jest możliwy), bo w tym wypadku wolę "true commit".

Da się to jakoś wymusić, czy muszę się pilnować i sam wymuszać odpowiednie zachowanie (obecnie tak robię)?

1

trzeba zaczarować aliasami by było łatwiej, ale:

pull z fast forward (domyślne działanie)

master$ git pull --ff origin master

pull bez fast forward

master$ git pull --no-ff origin feature

względnie zrezygnować z pull https://adamcod.es/2014/12/10/git-pull-correct-workflow.html

0

tyle to ja wiem (napisałem, że pilnuje się jaka jest obecnie sytuacja i wymuszam odpowiednie zachowanie), ale chciałem ustawić regułę, że sam się domyślał kiedy ma być ff a kiedy nie.
Wystarczy mi sposób na wykrycie, że cała droga dla FF odbywa się w relacji child-first parent (nie ma przejścia child-second parent).
Wtedy napiszę sobie odpowiedni skrypt, albo wręcz będę kombinował z git hooks.

Obecnie mam zrobione tak, że tylko na branchu master mam wymuszone no-ff:

git config branch.master.mergeoptions  "--no-ff"

Przytakiej konfiguracji, póki aktualizuję master za pomocą fetch to jest wszystko ok:

git fetch origin master:master

jak do master dołączam feature, to też jest ok (zawsze chcę true commit).
Ale jak się zapomnę i zrobię git pull origin master kiedy jestem na master, to nie chce by mi robił "true commit" tylko wyjątkowo zrobił ff.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.