Як зробити так, щоб за замовчуванням git merge було --no-ff --no-commit?


84

Політика компанії полягає у використанні --no-ffдля об’єднання комітів. Мені особисто подобається коригувати повідомлення журналу злиття, тому я їх використовую --no-commit. Плюс мені подобається фактично компілювати та тестувати, перш ніж відпустити коміт.

Як зробити --no-ffі --no-commitвстановити за замовчуванням для мене всі гілки?

(і я дізнався за роки з моменту цього запитання, я майже завжди задоволений комітом, тому простіше дозволити йому зафіксувати за замовчуванням і до тих пір, поки я виправляю або іншим чином виправляю щось перед тим, як робити штучні речі, все добре...)


старше споріднений: stackoverflow.com/questions/2500296 / ...
cregox

Відповіді:


112

Помістіть це в $ HOME / .gitconfig:

[merge]
    ff = no
    commit = no

Ви можете використовувати git-config для цього:

  git config --global merge.commit no
  git config --global merge.ff no

1
Ви впевнені, що це працює? Це не для мене, мені довелося скористатися або branch.master.mergeoptions="--no-ff", або merge.ff="no"(див. Відповідь нижче)
gaizka

@gaizka Справді, в 1.7.2 і в 1.7.7.2 це не працює. Я спробую трохи пізніше перевірити старіші версії.
Вільям Перселл,

@Stripes, використовуючи команду git config, поміщає її в [злиття], а не [ядро]
Tisch

41

Щоб зробити --no-ff --no-commitповедінку злиття за замовчуванням, встановіть параметри на noвикористання:

git config --global merge.ff no
git config --global merge.commit no

Однак проблема в цьому полягає в тому, що git pull= git fetch+ git merge. Отже, кожного разу, коли ви витягуєте з віддаленого сервера, ви створюєте потворний коміт злиття, коли це буде простим перемотуванням вперед. Щоб вирішити цю проблему, встановіть pull.ffна yes:

git config --global pull.ff yes

17
Незважаючи на те, що це вірно при використанні злиття, слід зазначити, що якщо ви використовуєте merge.ffзамість цього, то це не робить - це впливає лише на явне злиття, тоді як витягування все одно роблять бажане перемотування вперед.
Нік

3
Коли я використовую merge.ff = no, git pullстворює коміти злиття.
Matt McClure

3
щоб вирішити цю проблему, вам слід використовувати git pull --rebase( git-scm.com/docs/git-pull ) або налаштувати branch.autosetuprebase( git-scm.com/docs/git-config.html )
Cybot

8
або використовуйтеpull.ff = yes
gabeio

20

Починаючи з версії 1.7.6 git, вам слід використовувати

git config [--global] merge.ff no

"змушувати" використовувати --no-ffпри кожному злитті.

Поведінка за замовчуванням

git config [--global] merge.ff yes

І с

git config [--global] merge.ff only

він відмовиться від нешвидкого злиття


11

Згідно з інструкцією , ви повинні використовувати

$ git config [--global] merge.ff false

встановити параметр швидкого перемотування за замовчуванням для всіх гілок з утилітою git-config.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.