Предотвратить git от записи пустых слияний

Привыкший к SVN, я всегда делаю "обновление" перед тем, как поделиться любыми изменениями, поэтому перед тем, как делать какие-либо нажатия, я всегда вытаскиваю сначала.

Это раздражает, когда я тяну (хотя никаких изменений на пульте дистанционного управления не было) и вижу фиксацию для слияния с 0 changed files with 0 additions and 0 deletions. Зарабатывает как:
https://github.com/UCF/Harvard-Mobile-Web/commit/be9d6b2d1ab196554e080d8b8647a9d16c8a5ddf

Я считаю, что это бесполезный шум при просмотре истории фиксации.

Может быть, что-то мне не хватает, есть ли смысл в этом коммите? Если нет, есть ли способ предотвратить git от записи пустых слияний?

Ответы

Ответ 1

Само определение git pull по существу "извлекает и объединяется с новым удаленным HEAD для моей текущей ветки". Если вы хотите переустановить вместо этого, просто git pull --rebase. Это изменяет тягу, чтобы перегрузить ваши фиксации поверх новой удаленной HEAD.

Лично мне нравится git fetch (загружать новые объекты с пульта, но не обновлять локальные ветки) и проверять ситуацию, а затем решать, слияние или переустановка.

Ответ 2

Есть несколько вариантов, все сводятся к одному и тому же: git используйте параметр --rebase (как упоминалось @cdhowie).

Вероятно, вы обнаружите, что предпочитаете один из них:

Вариант 1: Явно используйте git pull --rebase каждый раз.

Вариант 2: для каждого проекта, измените файл .git/config, добавив

[branch "master"]
 remote = origin
 merge = refs/heads/master
 rebase = true

Вариант 3: в вашем личном ~/.gitconfig

[branch]  
  autosetuprebase = always

Лично мне нравится вариант 3, так как он позволяет мне не применять ничего на других разработчиков, но все равно не нужно набирать --rebase каждый раз.

Также см. Как сделать Git по умолчанию использовать rebase для всех моих репозиториев?